网站大量收购独家精品文档,联系QQ:2885784924

原型的含义是指如果构造器有个对象则由该器创建实例O.pdfVIP

原型的含义是指如果构造器有个对象则由该器创建实例O.pdf

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
原型的含义是指:如果构造器有个原型对象 A,则由该构造器创建的实例(Object Instance)都必然 于 A。““在 JavaScript 中,对象实例(Object Instance) 并没有原型,而构造器(Constructor)有原型,属性’构造器.prototype’指 向原型。对象只有 “构 造自某个原型”的问题,并不存在 “持有(或拥有)某 个原型”的问题。””如何理解这一句话? 代码 1: 01 function myFunc() { 02 var name = stephenchan; 03 var age = 23; 04 function code() { 05 alert(Hello World!); 06 }; 07 } 08 var obj = new myFunc(); 09 //输出 undefined,对象实例没有原型 10 alert(obj.prototype); 11 //输出 myFunc 的函数代码,obj 由myFunc 构造出来的 12 alert(obj.constructor); 13 //输出 true 14 alert(obj.constructor == myFunc); 15 16 //输出[object Object],说明myFunc 的原型是一个对象 17 alert(myFunc.prototype); //输出 function Function() { [native code] },[native code]的意思是 18 JavaScript 引擎的内置函数 19 alert(myFunc.constructor); 20 //输出 true,函数原型的构造器默认是该函数 21 alert(myFunc.prototype.constructor == myFunc); 构造器与函数的概念是一致的,即代码 1 中,myFunc 就是一个构造器,因为通 过 new myFunc()就可以构造出一个对象实例了。因此,”alert(obj.prototype)” 输出 undefined 说明了对象实例是没有原型的,”alert(myFunc.prototype)” 输出[object Object]说明了构造器有原型,而 “obj.constructor myFunc”返 回 true 说明 obj 的构造器是myFunc。 原型其实也是一个对象实例。再强调一下原型的含义是:如果构造器有个原型对 象 A,则由该构造器创建的实例 (Object Instance)都必然 于 A,而且采用 的读遍历机制 的。读遍历 的意思是:仅当写某个实例的成员时,将成员 的信息 到实例映像中。即当构造 一个新的对象时,新对象里面的属性指向 的是原型中的属性, 对象实例的属性时,获取的是原型对象的属性值。而当 对象实例对一个属性进行写操作时,才会将 属性写到新对象实例的属性列表中。 图 1 JavaScript 使用读遍历机制实现的原型继承 代码 2: 01 Object.prototype.value = abc; 02 var obj1 = new Object(); 03 var obj2 = new Object(); 04 obj2.value = 10; 05 //输出 abc, 的是原型Object 中的value 06 alert(obj1.value); 07 //输出 10, 的是 obj2 成员列表中的 value 08 alert(obj2.value); 09 //删除 obj2 中的value,即在 obj2 的成员列表中将value 删除掉 10 delete obj2.value; 11 //输出 abc, 的是原型Object 中的value 12 alert(obj2.value); 图 1 是对代码 2 的描述,说明读遍历机制是如何在成员列表以至原型中管理对象 成员的。只有对属性进行第一次写操作的时候,才会在对象的成员列表中添加 该 属性的 。当 obj1 和 obj2 通过 new 来构造出来的时候,仍然是一个指向原型 的 ,在操作过程中也没有与原型相同大小的对象实例

文档评论(0)

honglajiao + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档