javascript原型prototype

javascript原型prototype

ID:11075805

大小:91.00 KB

页数:10页

时间:2018-07-09

javascript原型prototype_第1页
javascript原型prototype_第2页
javascript原型prototype_第3页
javascript原型prototype_第4页
javascript原型prototype_第5页
资源描述:

《javascript原型prototype》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、初看原型prototype源自法语,软件界的标准翻译为“原型”,代表事物的初始形态,也含有模型和样板的意义。JavaScript中的prototype概念恰如其分地反映了这个词的内含,我们不能将其理解为C++的prototype那种预先声明的概念。JavaScript的所有function类型的对象都有一个prototype属性。这个prototype属性本身又是一个object类型的对象,因此我们也可以给这个prototype对象添加任意的属性和方法。既然prototype是对象的“原型”,那么由该函数构造出来的对象应该都会具有这个“原型”的特性。事实上,在构造函数的prototype上

2、定义的所有属性和方法,都是可以通过其构造的对象直接访问和调用的。也可以这么说,prototype提供了一群同类对象共享属性和方法的机制。我们先来看看下面的代码:functionPerson(name){this.name=name;//设置对象属性,每个对象各自一份属性数据};//给Person函数的prototype添加SayHello方法。Person.prototype.SayHello=function(){alert("Hello,I'm"+this.name);}varBillGates=newPerson("BillGates");//创建BillGates对象varStev

3、eJobs=newPerson("SteveJobs");//创建SteveJobs对象BillGates.SayHello();//通过BillGates对象直接调用到SayHello方法SteveJobs.SayHello();//通过SteveJobs对象直接调用到SayHello方法alert(BillGates.SayHello==SteveJobs.SayHello);//因为两个对象是共享prototype的SayHello,所以显示:true程序运行的结果表明,构造函数的prototype上定义的方法确实可以通过对象直接调用到,而且代码是共享的。显然,把方法设置到proto

4、type的写法显得优雅多了,尽管调用形式没有变,但逻辑上却体现了方法与类的关系,相对前面的写法,更容易理解和组织代码。那么,对于多层次类型的构造函数情况又如何呢?我们再来看下面的代码:functionPerson(name)//基类构造函数2{3this.name=name;4};56Person.prototype.SayHello=function()//给基类构造函数的prototype添加方法7{8alert("Hello,I'm"+this.name);9};1011functionEmployee(name,salary)//子类构造函数12{13Person.call(thi

5、s,name);//调用基类构造函数14this.salary=salary;15};1617Employee.prototype=newPerson();//建一个基类的对象作为子类原型的原型,这里很有意思1819Employee.prototype.ShowMeTheMoney=function()//给子类添构造函数的prototype添加方法20{21alert(this.name+"$"+this.salary);22};2324varBillGates=newPerson("BillGates");//创建基类Person的BillGates对象25varSteveJobs=n

6、ewEmployee("SteveJobs",1234);//创建子类Employee的SteveJobs对象2627BillGates.SayHello();//通过对象直接调用到prototype的方法28SteveJobs.SayHello();//通过子类对象直接调用基类prototype的方法,关注!29SteveJobs.ShowMeTheMoney();//通过子类对象直接调用子类prototype的方法3031alert(BillGates.SayHello==SteveJobs.SayHello);//显示:true,表明prototype的方法是共享的这段代码的第17行

7、,构造了一个基类的对象,并将其设为子类构造函数的prototype,这是很有意思的。这样做的目的就是为了第28行,通过子类对象也可以直接调用基类prototype的方法。为什么可以这样呢?原来,在JavaScript中,prototype不但能让对象共享自己财富,而且prototype还有寻根问祖的天性,从而使得先辈们的遗产可以代代相传。当从一个对象那里读取属性或调用方法时,如果该对象自身不存在这样的属性或方法,就会去自

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。