(JavaScrpt定义类定义属性定义方法的几种方式详解及分析.docVIP

(JavaScrpt定义类定义属性定义方法的几种方式详解及分析.doc

  1. 1、本文档共8页,可阅读全部内容。
  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文档。上传文档
查看更多
(JavaScrpt定义类定义属性定义方法的几种方式详解及分析

JavaScript 定义类,定义属性,定义方法的几种方式详解及分析 提起面向对象我们就能想到类,对象,封装,继承,多态。在《javaScript高级程序设计》(人民邮电出版社,曹力、张欣译。英文名字是:Professional JavaScript for Web Developers)这本书中描述的还算比较详细。我们看看JavaScript中定义类的各种方法。 1.工厂方式 ??? javaScript中创建自己的类和对象,我们应该是必须掌握的,我们都知道javaScript中对象的属性可以在对象创建后动态定义,比如下面的代码: script type=text/javascript ??? //定义 ??? var oCar = new Object(); ??? oCar.color = red; ??? oCar.doors = 4; ??? oCar.showColor = function() { ??????? alert(this.color); ??? } ??? //调用 ??? oCar.showColor(); /script ??? 我们很容易使用oCar对象,但是我们创就是想创建多个Car实例。我们可以使用一个函数来封装上面的代码来实现:script type=text/javascript ??? //定义 ??? function createCar() { ??????? var oCar = new Object(); ??????? oCar.color = red; ??????? oCar.doors = 4; ??????? oCar.showColor = function() { ??????????? alert(this.color); ??????? } ??????? return oCar; ??? } ??? //调用 ??? var ocar1 = createCar(); ??? var ocar2 = createCar(); ??? ocar1.color = black; ??? ocar1.showColor(); ??? ocar2.showColor(); /script ??? 顺便说一下,javaScript对象默认成员属性都是public 的。这种方式我们称为工厂方式,我们创造了能创建并返回特定类型的对象的工厂。 ??? 这样做有点意思了,但是在面向对象中我们经常使用创建对象的方法是: Car car=new Car(); ??? 使用new 关键字已经深入人心,因此我们使用上面的方法去定义总感觉别扭,并且每次调用时都去创建新的属性以及函数,功能上也不实际。下来我们看看构造函数的形式定义类。 2.构造函数 这种方式看起来有点象工厂函数。具体表现如下: script type=text/javascript ??? //定义 ??? function Car(color, doors) { ??????? this.color = color; ??????? this.doors = doors; ??????? this.showColor = function() { ??????????? alert(this.color); ??????? }; ??? } ??? //调用 ??? var car1 = new Car(red, 4); ??? var car2 = new Car(blue, 4); ??? car1.showColor(); ??? car2.showColor(); /script ??? 看起来效果很明显,有差别了吧。感觉有点意思了。在构造函数内部创造对象使用this 关键字,使用new 运算符创建对象感觉非常亲切。但是也有点问题:每次new 对象时都会创建所有的属性,包括函数的创建,也就是说多个对象完全独立,我们定义类的目的就是为了共享方法以及数据,但是car1对象与car2对象都是各自独立的属性与函数,最起码我们应该共享方法。这就是原形方式的优势所在。 3.原型方式 利用对象的prototype属性,可把它看出创建新对象所依赖的原型。方法如下: script type=text/javascript ??? //定义 ??? function Car() { ??? }; ??? Car.prototype.color = red; ??? Car.prototype.doors = 4; ??? Car.prototype.drivers = new Array(Tom, Jerry); ??? Car.prototype.showColor = function() { ??????? alert(

文档评论(0)

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

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

1亿VIP精品文档

相关文档