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(); }