學習筆記:javascript中的六種繼承
阿新 • • 發佈:2019-02-19
第五種:寄生式繼承
function obj(o){
function F(){}
F.prototype=o;
return new F();
}
//寄生函式
function create(o)
{
var f=obj(o);
f.fun=function(){
return '請確認:'+this.name+this.age;
}
return f;
}
var p={
name:'lily',
age:20
}
var p1=create(p);
alert(p1.fun()); //輸出結果是:請確認:lily20
alert(p1.name); //lily
第六種:寄生式組合繼承
function obj(o){
function F(){}
F.prototype=o;
return new F();
}
//寄生函式
function create(box,desk)
{
var f=obj(box);
f.constructor=desk; //調整原型構造指標,避免出錯
desk.prototype=f;
}
function Box(myname,myage)
{
this.name=myname;
this.age=myage;
}
function Desk()
{
Box.call(this,'lily',20); //物件冒充
}
create(Box,Desk);
var desk=new Desk();
alert(desk.name); //輸出結果為:lily
alert(desk.age); //輸出結果為:20
function obj(o){
function F(){}
F.prototype=o;
return new F();
}
//寄生函式
function create(o)
{
var f=obj(o);
f.fun=function(){
return '請確認:'+this.name+this.age;
}
return f;
}
var p={
name:'lily',
age:20
}
var p1=create(p);
alert(p1.fun()); //輸出結果是:請確認:lily20
alert(p1.name); //lily
第六種:寄生式組合繼承
function obj(o){
function F(){}
F.prototype=o;
return new F();
}
//寄生函式
function create(box,desk)
{
var f=obj(box);
f.constructor=desk; //調整原型構造指標,避免出錯
desk.prototype=f;
}
function Box(myname,myage)
{
this.name=myname;
this.age=myage;
}
function Desk()
{
Box.call(this,'lily',20); //物件冒充
}
create(Box,Desk);
var desk=new Desk();
alert(desk.name); //輸出結果為:lily
alert(desk.age); //輸出結果為:20