Posted on 2012-04-27 20:58
Shuffy 閱讀(760)
評論(0) 編輯 收藏 引用 所屬分類:
Web開發技術
//1、構造函數+原型方法
//構造函數
//等價于Person=function(){
}

function Person(name,age)
{
this.name=name;
this.age=age;
}
//原型構造(大括號的形式)

Person.prototype=
{
gender:"男",

toString:function()
{
alert("name:"+this.name+",age:"+this.age);
}
};
//原型構造
Person.prototype.height=1.5;

Person.prototype.toString=function()
{
alert("name:"+this.name+",age:"+this.age+",gender:"+this.gender+",height:"+this.height);
};
var person=new Person("sandy",25);
person.gender="女";
person.height=1.7;
alert(person.name);
alert(person.age);
alert(person.gender);
alert(person.height);
person.toString();
//2、原型構造

User=function()
{};

User.prototype=
{
name:"",
password:"",

toString:function()
{
alert(this.name+","+this.password);
}
};
var user = new User();
user.name="admin";
user.password="admin";
user.toString();
//通過原型和this關鍵字構造的屬性和方法是公有的。
//原型構造的缺點是當屬性是對象類型時,該屬性為引用類型,多個實例共享這一個屬性,
//其中一個實例改變了該屬性之后,所有實例的該屬性都被改變了。
//3、構造函數方法,可以通過下面類似OOP方式定義類
//等價于function Car(sign,number){
}

Car=function(sign,number)
{
//函數里的局部變量,用OOP的觀點看,是私有屬性。
var _sign=sign;
var _number=number;

this.getSign=function()
{
return _sign;
};

this.setSign=function(sign)
{
_sign=sign;
};

this.getNumber=function()
{
return _number;
};

this.setNumber=function(number)
{
_number=number;
};
};
var car1 = new Car("寶馬","1111111");
var car2 = new Car("歐迪","2333333");
alert(car1.getSign()+":"+car1.getNumber());
alert(car2.getSign()+":"+car2.getNumber());
car1.setNumber("23223333");
car2.setNumber("444444444");
alert(car1.getSign()+":"+car1.getNumber());
alert(car2.getSign()+":"+car2.getNumber());
//4、工廠方式
//工廠方式1
//function Song(){
}

Song=function()
{
//構造一個對象并返回(直接量方式構造一個對象)
var obj=new Object();
obj.author="";
obj.name="";

obj.play=function()
{
alert("author:"+obj.author+",name:"+obj.name);
};
return obj;
};
var song=Song();
song.author="Jay";
song.name="夜曲";
song.play();
//工廠方式2

function Music()
{
//新建一個匿名類的對象并返回
//var obj = new (function(){
// this.type="";
// this.year="";
//})();
//return obj;

return new (function()
{
this.type="";
this.year="";
})();
}
var m = Music();
m.type="爵士";
m.year="80年代";
alert(m.type);
alert(m.year);
//5、定義靜態方法和屬性,只能通過類名訪問,類實例是訪問不到的。

Pen=function()
{};
Pen.DEFAULTCOLOR="BLACK";
var pen = new Pen();
//alert(pen.DEFAULTCOLOR);
alert(Pen.DEFAULTCOLOR);