封裝
1讼积、利用封裝
function person(name,age)
{
this.name=name;
this.age=age;
this.showName=function()
{
alert(this.name);
}
this.showAge=function()
{
alert(this.age);
}
}
優(yōu)點(diǎn):會(huì)為每個(gè)對(duì)象創(chuàng)建獨(dú)享的函數(shù)對(duì)象扛门,所有的屬性和方法都為私有的
缺點(diǎn):方法和屬性都是固定的,類似于java中的封裝嚷闭,方法和屬性都是固定的
2攒岛、混合構(gòu)造函數(shù)/原型方式:
function person(name,age)
{
this.name=name;
this.age=age;
}
person.prototype={
showName:function()
{
alert(this.name);
},
showAge:function()
{
alert(this.age);
}
}
var op=new person('blue',11);
op.showAge();
優(yōu)點(diǎn):屬性私有后,改變各自的屬性不會(huì)影響別的對(duì)象胞锰。同時(shí)灾锯,方法也是由各個(gè)對(duì)象共享的。在語(yǔ)義上符合面向?qū)ο蟮乃枷耄?/p>
繼承
1嗅榕、包括屬性的繼承和方法的繼承顺饮;
function person(name,sex)
{
this.name=name;
this.sex=sex;
}
person.prototype={
showName:function()
{
alert(this.name);
},
showSex:function()
{
alert(this.sex);
}
}
function worker(name,sex,job)
{
person.call(this,name,sex); //構(gòu)造函數(shù)偽裝,調(diào)用父級(jí)的構(gòu)造函數(shù)-為了繼承屬性
this.job=job;
}
//原型鏈 通過原型繼承父類的方法凌那;
for(attr in person.prototype)
{
worker.prototype[attr]=person.prototype[attr];
}
worker.prototype.showJob=function()
{
alert(this.job);
}
var op=new person('blue','男');
var ow=new worker('blue','男','程序員');
op.showName(); //blue
op.showSex(); //男
ow.showName(); //blue
ow.showSex(); //男
ow.showJob(); //程序員
優(yōu)點(diǎn):父類新加的功能兼雄,子類也具備,子類新加的功能帽蝶,不影響父類赦肋;