日期:2014-05-16  浏览次数:20464 次

Javascript中类的实现小结
1.用function关键字定义类
   如function Shape(){
     var x =1;
     var y =2
     }
用var shape =new Shape();可以创建类的一个实例
2.用var定义的属性是私有的,我们需要用this关键字定义公有属性。
    function Shape(){
     this.x = 1;
     this.y = 2;
   }这样就可以通过shape.x访问了。
3.定义公有方法和私有方法
js中函数是Function类的实例,Function间接继承自Object,故函数也是一个对象,因此我们可以用赋值的方法创建函数,可以将函数赋值给类的一属性变量,这个属性变量即可称为方法,因为它是一个可执行的函数。
function Shape(){
     var x =1;
     var y =2
     this.draw = function(){
          alert("画圆");
       }
     }
这样就可以通过shape.draw();调用了。
注意若其中的this改为var的话,则该方法为Shape类私有的了。
4.模拟构造函数
function Shape(){
  var init = function init(){
//
  }
init();
}
在Shape的最后,人为的调用了init函数,那么,在创建了一个Shape对象是,init总会被自动调用,可以模拟我们的构造函数了。
5.带参数的构造函数
Javascript并不支持OOP,当然也就没有构造函数了,不过,可以自己模拟一个构造函数,让对象被创建时自动调用
function Shape(a,b){
  var x = 0;
  var y = 0;
  var init = function init(){
  x = a;
  y = b;
};
init();
}
这样就可以 通过var shape = new Shape(0,1)创建对象了;
6.静态属性和静态方法
function Shape(a,b){
  var x = 0;
  var y = 0;
  var init = function init(){
  x = a;
  y = b;
};
init();
}
Shape.count = 20;//定义一个静态属性count,这个属性是属于类的,不是属于对象的。
Shape.staticMethod = function(){
};//定义一个静态的方法
注意:静态属性和方法都是公有的
7.在类的方法中访问私有和公有属性
function Shape(a,b){
  var x = 0;
  var y = 0;
  this.gx =0;
  this.gy =0
  var init = function init(){
  x = a;
  y = b;
  this.gx = a;
  this.gy = b;
};
init();
}
8.this的主意事项
类中的this并不是一直指向我们的这个对象本身的,主要原因还是因为Javascript并不是OOP语言,而且,函数和类均用function定义,会引起一些小问题。
解决方法是我们在定义类的一开始就将this保存到一个私有的属性中,以后,我们可以用这个属性代替this。我用这个方法使用this指针相当安全,而且比较省心.
function Shape(a,b){
  var _this = this;
  var x = 0;
  var y = 0;
_this.gx =0;
  _this.gy =0
  var init = function init(){
  x = a;
  y = b;
  _this.gx = a;
  _this.gy = b;
};
init();
}