javascript 定义类,定义属性,定义方法的几种方式详解及分析

javascript 定义类,定义属性,定义方法的几种方式详解及分析

ID:6858334

大小:36.00 KB

页数:8页

时间:2018-01-28

javascript 定义类,定义属性,定义方法的几种方式详解及分析_第1页
javascript 定义类,定义属性,定义方法的几种方式详解及分析_第2页
javascript 定义类,定义属性,定义方法的几种方式详解及分析_第3页
javascript 定义类,定义属性,定义方法的几种方式详解及分析_第4页
javascript 定义类,定义属性,定义方法的几种方式详解及分析_第5页
资源描述:

《javascript 定义类,定义属性,定义方法的几种方式详解及分析》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、JavaScript定义类,定义属性,定义方法的几种方式详解及分析提起面向对象我们就能想到类,对象,封装,继承,多态。在《javaScript高级程序设计》(人民邮电出版社,曹力、张欣译。英文名字是:ProfessionalJavaScriptforWebDevelopers)这本书中描述的还算比较详细。我们看看JavaScript中定义类的各种方法。1.工厂方式   javaScript中创建自己的类和对象,我们应该是必须掌握的,我们都知道javaScript中对象的属性可以在对象创建后动态定义,比如下面的代码:

2、ipt">   //定义   varoCar=newObject();   oCar.color="red";   oCar.doors=4;   oCar.showColor=function(){       alert(this.color);   }   //调用   oCar.showColor();   我们很容易使用oCar对象,但是我们创就是想创建多个Car实例。我们可以使用一个函数来封装上面的代码来实现:   //定义   functioncreateCar(){   

3、    varoCar=newObject();       oCar.color="red";       oCar.doors=4;       oCar.showColor=function(){           alert(this.color);       }       returnoCar;   }   //调用   varocar1=createCar();   varocar2=createCar();   ocar1.color="black";   ocar1.showColor();   ocar2.showColor();

4、ipt>   顺便说一下,javaScript对象默认成员属性都是public的。这种方式我们称为工厂方式,我们创造了能创建并返回特定类型的对象的工厂。   这样做有点意思了,但是在面向对象中我们经常使用创建对象的方法是:Carcar=newCar();   使用new关键字已经深入人心,因此我们使用上面的方法去定义总感觉别扭,并且每次调用时都去创建新的属性以及函数,功能上也不实际。下来我们看看构造函数的形式定义类。2.构造函数这种方式看起来有点象工厂函数。具体表现如下:   //定义   functio

5、nCar(color,doors){       this.color=color;       this.doors=doors;       this.showColor=function(){           alert(this.color);       };   }   //调用   varcar1=newCar("red",4);   varcar2=newCar("blue",4);   car1.showColor();   car2.showColor();   看起来效果很明显,有差别了吧。感觉有点意思了。在构造函数内部

6、创造对象使用this关键字,使用new运算符创建对象感觉非常亲切。但是也有点问题:每次new对象时都会创建所有的属性,包括函数的创建,也就是说多个对象完全独立,我们定义类的目的就是为了共享方法以及数据,但是car1对象与car2对象都是各自独立的属性与函数,最起码我们应该共享方法。这就是原形方式的优势所在。3.原型方式利用对象的prototype属性,可把它看出创建新对象所依赖的原型。方法如下:   //定义   functionCar(){   };   Car.prototype.color="red

7、";   Car.prototype.doors=4;   Car.prototype.drivers=newArray("Tom","Jerry");   Car.prototype.showColor=function(){       alert(this.color);   }   //调用:   varcar1=newCar();   varcar2=newCar();   car1.showColor();   car2.showColor();   alert(car1.drivers);   car1.drivers.push("stephen")

8、;   a

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

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

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