WEB开发网
开发学院网页设计JavaScript JavaScript中的面向对象----类 阅读

JavaScript中的面向对象----类

 2010-09-14 13:24:12 来源:WEB开发网   
核心提示: 原理:Car也可以有属性的 通过_initialized这个标志确保方法只被声明一次优点:避免了函数的重复创建 属性和方法都写在类的定义里缺点:三、我所使用的类1、关于私有变量:JavaScript中,基本上没法区分私有变量和公共变量,JavaScript中的面向对象----类(3),但是

原理: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.属性

这样的话显得更面向对象了,但是构造函数方法的老毛病还是没有改掉,对象的函数还是会被重复创建,但是我相信在一般情况下这对性能构不成威胁的。

上一页  1 2 3 

Tags:JavaScript 面向 对象

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接