JavaScript中的面向对象----类
2010-09-14 13:24:12 来源:WEB开发网原理:Car也可以有属性的 通过_initialized这个标志确保方法只被声明一次
优点:避免了函数的重复创建 属性和方法都写在类的定义里
缺点:
三、我所使用的类
1、关于私有变量:
JavaScript中,基本上没法区分私有变量和公共变量,但是可以在命名上区分,一般习惯在私有变量的前后各加上两个下划线 this.__privatePropery__或者是在变量前加一个下划线this._privateProperty。
2、从构造函数方法衍生
对于第二种方法——构造函数方法对于私有变量的处理却有很大的优势!它可以将私有变量做到与外部隔离。这种隔离是将私有变量和方法在类里面用var来声明,而共有的变量和方法用赋值给this。
例子如下:
functionCar(sColor,iDoors,iMpg){
varself=this;
this.color=sColor;
this.doors=iDoors;
varmpg=iMpg;//私有变量
this.showCarInfo=function(){
alert(this.color);
alert(mpg);//不是this.mpg
}
varprivateShowCarInfo=function(){
//这时只能访问私有变量
//alert(this.color);//会出错
alert(mpg);//可以访问
//那怎么才能访问this.color呢?总不可能私有方法不能访问公共属性吧?
//在类里面设置一个私有变量,让他指向这个实例//第二行中var self = this;
alert(self.color);//调用成功//当然公共方法也能访问self
}
this.anotherShowCarInfo=function(){
privateShowCarInfo();
}
}
varoCar1=newCar("red",4,23);
oCar1.showCarInfo();
oCar1.anotherShowCarInfo();
alert(oCar1instanceofCar);
总之:this.方法能访问this.属性和var 变量
Var方法只能访问var变量,需要借助self变量来访问this.属性
这样的话显得更面向对象了,但是构造函数方法的老毛病还是没有改掉,对象的函数还是会被重复创建,但是我相信在一般情况下这对性能构不成威胁的。
Tags:JavaScript 面向 对象
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接