要创建已经定义了的带有属性(如width和height)的对象,需要编写一个构造函数在新的对象中创建并初始化这些属性。构造函数是具有两个特性的JavaScript函数:
●它由new运算符调用。
●传递给它的是一个对新创建的空对象的引用,将该引用作为关键字this的值,而且它还要对新创建的对象进行适当的初始化。
例8-1说明了如何定义并调用Rectangle对象的构造函数。
例8-1:Rectangle对象的构造函数
//定义构造函数
//注意它如何初始化this引用的对象
function Rectangle(w,h)
{
this.width = w;
this.height = h;
}
//调用构造函数创建两个矩形对象。
//注意我们把宽度和高度传递给了构造函数,这样它就能正确初始化每个新对象了。
var rect1 = new Rectangle(2,4);
var rect2 = new Rectangle(8.5.11);注意构造函数如何使用它的参数来初始化this关键字所引用的对象的属性。记住,构造函数只是初始化了特定的对象,但并不返回这个对象。
我们已经通过定义一个适当的函数定义了一个对象类,现在可以确保所有由Rectangle()构造函数创建的对象都有初始化了的width和height属性。这意味着我们可以在此基础上编写程序,统一处理所有的Rectangle对象。由于每一个构造函数都定义了对象的一个类,所以给每个构造函数一个名字以说明它所创建的对象类就显得比较重要了。例如,用new Rectangle(1,2)创建一个矩形就比用new init_rect(1,2)直观得多。
构造函数通常没有返回值。它们只是初始化由this值传递进来的对象,并且什么也不返回。但是,构造函数可以返回一个对象值,如果这样做,被返回的对象就成了new表达式的值。在这种情况下,this值所引用的对象就被丢弃了。
评论(0)
暂无评论。