归纳下js面向对象的几种常见写法

//定义Circle类,拥有成员变量r,常量PI和计算面积的成员函数area()

1.工厂方式

varCircle =function() {varobj =newObject();

obj.PI= 3.14159;

obj.area=function( r ) {returnthis.PI * r *r;

}returnobj;

}varc =newCircle();

alert( c.area(1.0 ) );

2.比较正规的写法

functionCircle(r) {this.r =r;

}

Circle.PI= 3.14159;

Circle.prototype.area=function() {returnCircle.PI *this.r *this.r;

}varc =newCircle(1.0);

alert(c.area());

3.json写法

varCircle={

      "PI":3.14159,

       "area":function(r){

               return this.PI * r *r;

         }

};

alert( Circle.area(1.0) );

4.有点变化,但是实质和第一种一样

var Circle=function(r){

       this.r=r;

 }

Circle.PI= 3.14159;

Circle.prototype={

       area:function(){

           return  this.r*this.r*Circle.PI;

       }

  }varobj=newCircle(1.0);

 alert(obj.area())

Circle.PI = 3.14159; 能够放入属性中写成this.PI=3.14159;

常用为第一种和第三种

第三种写法的扩展小实例

var show={

    btn:$('.div1'),

    init:function(){                                                                                                                               var   that=this;

         alert(this);

         this.btn.click(function(){

             that.change();

             alert(this);

           })

       },

      change:function(){

                  this.btn.css({'background':'green'});

      }

}

show.init();

需要注意的是this的指向问题

你可能感兴趣的:(归纳下js面向对象的几种常见写法)