悟透JavaScript之初看原型 --- (1)

prototype 源自法语,软件界的标准翻译为原型,代表事物的初始形态,也含有模型和样板的意义。JavaScript 中的prototype 概念恰如其分地反映了这个词的内含,我们不能将其理解为C++prototype 那种预先声明的概念。

JavaScript 的所有function 类型的对象都有一个prototype 属性。这个prototype 属性本身又是一个object 类型的对象,因此我们也可以给这个prototype 对象添加任意的属性和方法。既然prototype是对象的原型,那么由该函数构造出来的对象应该都会具有这个原型的特性。事实上,在构造函数的prototype 上定义的所有属性和方法,都是可以通过其构造的对象直接访问和调用的。也可以这么说,prototype 提供了一群同类对象共享属性和方法的机制。

 

我们先来看看下面的代码:

function Person(name)

{

this.name = name; //设置对象属性,每个对象各自一份属性数据

};

Person.prototype.SayHello = function() //Person 函数的prototype 添加SayHe

llo 方法。

{

alert("Hello, I'm " + this.name);

}

var BillGates = new Person("Bill Gates"); //创建BillGates 对象

var SteveJobs = new Person("Steve Jobs"); //创建SteveJobs 对象

BillGates.SayHello(); //通过BillGates 对象直接调用到SayHello 方法

SteveJobs.SayHello(); //通过SteveJobs 对象直接调用到SayHello 方法

alert(BillGates.SayHello == SteveJobs.SayHello); //因为两个对象是共享prototyp

e SayHello,所以显示:true

程序运行的结果表明,构造函数的prototype 上定义的方法确实可以通过对象直接调用到,而且代码是共享的。显然,把方法设置到prototype 的写法显得优雅多了,尽管调用形式没有变,但逻辑上却体现了方法与类的关系,相对前面的写法,更容易理解和组织代码。
发布了15 篇原创文章 · 获赞 5 · 访问量 2万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章