悟透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 的写法显得优雅多了,尽管调用形式没有变,但逻辑上却体现了方法与类的关系,相对前面的写法,更容易理解和组织代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值