//定義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.比較正規(guī)的寫法
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的指向問題