JavaScript面向对象之prototype.docVIP

  1. 1、本文档共5页,可阅读全部内容。
  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文档。上传文档
查看更多
JavaScript面向对象之prototype 什么是prototype属性?Prototype属性有什么作用? 1、prototype对象是实现面向对象的一个重要机制。每个函数也是一个对象,它们对应的类就是 function,每个函数对象都具有一个子对象prototype。Prototype 表示了该函数的原型, prototype表示了一个类的属性的集合。当通过new来生成一个类的对象时,prototype对象的属 性就会成为实例化对象的属性。 下面以一个例子来介绍prototype的应用,代码如下: 当用new创建一个对象时,prototype对象的属性将自动赋给所创建的对象,例如: 2、利用prototype实现继承 在以上的代码中,首先是HelloSubClass具有了和HelloClass一样的prototype,如果不考 虑构造方法,则两个类是等价的。随后,又通过prototype给HelloSubClass赋予了额外的属性和方法 所以HelloSubClass是在HelloClass的基础上增加了新的属性和方法,从而实现了类的继承。 在Javascript中,object就是个associative array。一个function就是个类。当你编写如下function时,其实就是定义了一个类,该function就是他的构造函数。 function MyObject(name, size) ???????{ ??????????????this.name = name; ??????????????this.size = size; ???????} 之后,你能方便的通过MyObject类的prototype属性来方便的扩充他。比如,你能给他添加其他的属性和方法。 ???????MyObject.prototype.tellSize = function() ???????{ ??????????????return size of +this.name+ is +this.size; ???????} ?????? ???????MyObject.prototype.color = red; ???????MyObject.prototype.tellColor = function() ???????{ ??????????????return color of +this.name+ is +this.color; ???????} ?????? ???????var myobj1 = new MyObject(tiddles, 7.5 meters); ???????domDiv.innerHTML += myobj1.tellColor()+br /br /; 你能想象,当你调用tellColor()方法后,结果是这样的: color of tiddles is red 非常方便的是,prototype属性能动态添加。比如,你需要往MyObject中加入一个height属性,并希望其提供一个tellHeight()方法来获得height属性的值。你能在上面的代码后,继续添加如下的代码: ???????MyObject.prototype.height = 2.26 meters; ???????MyObject.prototype.tellHeight = function() ???????{ ??????????????return height of +this.name+ is +this.height; ???????} 之后,你能访问一下myobj1的tellHeight()方法,你能得到如下的结果: height of tiddles is 2.26 meters prototype的这些动态的特性看起来有些迷人,不过我倒是反而觉得有些凉飕飕的。确实,这些特性给你非常大的灵活性,能给和你runtime改动类属性和方法的能力。不过,稍微发掘一下,会有些不良的习惯产生。 首先,如果能动态添加属性和方法,那么非常容易让人想到,当我调用时,我想要调用的属性或方法存在不?这是个非常严肃的问题,如果当我们调用时根本没有该属性或方法,将可能导致我们的脚本down掉。 不过也有解决办法。比如,在上面的代码中,当还没有tellHeight()方法时,我们能如下编写代码避免发生错误: ???????if (myobj1.tellHeight) ???????{ ??????????????domDiv.innerHTML += myobj1.tellHeight()+br /br /; ???????} 注意,一定要在if语句中,不要加方法后面的那对(),否则,直接就down掉了。有兴趣的读者能打印一下,

文档评论(0)

185****7617 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档