木子屋 Dnawo's BLOG

JavaScript的构造函数

👤 dnawo 📅 2007-11-21 👁 1889 👍 0 💬 0 🔄 《JavaScript权威指南》 📂 脚本语言
我们知道,在JavaScript中,使用new运算符以及预定义的构造函数(如Object()、Date()、Function()等)可以创建并初始化一个新对象。在许多实例中,这些预定义的构造函数和它们创建的内部对象类型都很有用。但是,在面向对象的程序设计中,使用由程序定义的自定义对象类型也很普遍。例如,如果你想编写一个操作矩形的程序,那么可以用一个特殊类型或对象类来表示矩形。这个矩形类的对象都有一个width属性和一个height属性,因为它们定义矩形的本质特征。

要创建已经定义了的带有属性(如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)

暂无评论。

计算题
评论需审核通过后显示
← 上一篇 GridView无代码更新、删除常见错误 下一篇 → 🔒 密码保护