《JS类的实现.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《JS类的实现

Javascript中的类实现Javascript本身并不支持面向对象,它没有访问控制符,它没有定义类的关键字class,它没有支持继承的extend或冒号,它也没有用来支持虚函数的virtual,不过,Javascript是一门灵活的语言,下面我们就看看没有关键字class的Javascript如何实现类定义,并创建对象。一:定义类并创建类的实例对象在Javascript中,我们用function来定义类,如下:function?Shape(){?var?x=1;?var?y=2;}你或许会说,疑?这个不是定义函数吗?没错,这个是定义函数,我们定义了一个Shape函数,并对x和y进行了初始化。不过,如果你换个角度来看,这个就是定义一个Shape类,里面有两个属性x和y,初始值分别是1和2,只不过,我们定义类的关键字是function而不是class。然后,我们可以创建Shape类的对象aShape,如下:var?aShape?=?new?Shape();二:定义公有属性和私有属性我们已经创建了aShape对象,但是,当我们试着访问它的属性时,会出错,如下:aShape.x=1;这说明,用var定义的属性是私有的。我们需要使用this关键字来定义公有的属性function?Shape(){?this.x=1;?this.y=2;}这样,我们就可以访问Shape的属性了,如。aShape.x=2;好,我们可以根据上面的代码总结得到:用var可以定义类的private属性,而用this能定义类的public属性。三:定义公有方法和私有方法在Javascript中,函数是Function类的实例,Function间接继承自Object,所以,函数也是一个对象,因此,我们可以用赋值的方法创建函数,当然,我们也可以将一个函数赋给类的一个属性变量,那么,这个属性变量就可以称为方法,因为它是一个可以执行的函数。代码如下:function?Shape(){?var?x=0;?var?y=1;?this.draw=function()?{?//print;?};}我们在上面的代码中定义了一个draw,并把一个function赋给它,下面,我们就可以通过aShape调用这个函数,OOP中称为公有方法,如:aShape.draw();如果用var定义,那么这个draw就变成私有的了,OOP中称为私有方法,如function?Shape(){?var?x=0;?var?y=1;?var?draw=function()?{?//print;?};}这样就不能使用aShape.draw调用这个函数了。三:构造函数Javascript并不支持OOP,当然也就没有构造函数了,不过,我们可以自己模拟一个构造函数,让对象被创建时自动调用,代码如下:function?Shape(){?var?init?=?function()?{?//构造函数代码?};?init();}在Shape的最后,我们人为的调用了init函数,那么,在创建了一个Shape对象是,init总会被自动调用,可以模拟我们的构造函数了。四:带参数的构造函数如何让构造函数带参数呢?其实很简单,将要传入的参数写入函数的参数列表中即可,如function?Shape(ax,ay){?var?x=0;?var?y=0;?var?init?=?function()?{?//构造函数?x=ax;?y=ay;?};?init();}这样,我们就可以这样创建对象:var?aShape?=?new?Shape(0,1);五:静态属性和静态方法在Javascript中如何定义静态的属性和方法呢?如下所示function?Shape(ax,ay){?var?x=0;?var?y=0;?var?init?=?function()?{?//构造函数?x=ax;?y=ay;?};?init();}Shape.count=0;//定义一个静态属性count,这个属性是属于类的,不是属于对象的。Shape.staticMethod=function(){};//定义一个静态的方法有了静态属性和方法,我们就可以用类名来访问它了,如下alert?( Shape.count?);Shape.staticMethod();注意:静态属性和方法都是公有的,目前为止,我不知道如何让静态属性和方法变成私有的~六:在方法中访问本类的公有属性和私有属性在类的方法中访问自己的属性,Javascript对于公有属性和私有属性的访问方法有所不同,请大家看下面的代码function?Shape(ax,ay){?var?x=0;?var?y=0;?this.gx=0;?this.gy=0;?var?init?=?function()?{?x=ax;//访

文档评论(0)

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

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

1亿VIP精品文档

相关文档