//原型鏈方式
function classa()
classa.prototype.color = "red";
classa.prototype.saycolor = function ()
function classb() {}
classb.prototype = new classa();
var b = new classb();
console.log(b.saycolor());
//call方法繼承
function classa(scolor, sname)
}function classb(scolor, sname, type)
}var b = new classb("red", "color_1", "color");
console.log(b.saycolor());
console.log(b.show());
call方法,即呼叫乙個物件的乙個方法,以另乙個物件替換當前物件。
在我打的這個例子中,可以看做classa物件代替this物件在classb中執行,那麼就實現了classb對classa的繼承。
function classa(scolor, sname)
}function classc(scolor, sname, type)
}var c = new classc("blue", "color_2", "color");
console.log(c.saycolor());
console.log(b.show());
//物件冒充
function classa(scolor)
}function classb(scolor, sname)
}var b = new classb("white", "color_3");
console.log(b.saycolor());
console.log(b.show());
//混合方式
function classa(scolor)
classa.prototype.saycolor = function ()
function classb(scolor, name)
classb.prototype = new classa();
classb.prototype.show=function()
var b = new classb("black", "color_4");
console.log(b.saycolor());
console.log(b.show());
利用call和原型鏈的混合方式,應該是比較合理的方式了,物件的屬性要麼來自自身屬性,要麼來自prototype,
在混合方式中,用call方式繼承父類函式的屬性,用原型鏈方式繼承父類prototype物件的方法
JS 繼承方法總結
function person var p1 newperson var p2 newperson console.log p1.say p2.say false核心 將父類的例項作為子類的原型 function cat cat.prototype new animal cat.prototype....
JS物件導向 JS繼承方法總結
物件導向中,繼承相對是比較難的,即使看了很多文章,可能依然不明白,下面我談談我的理解。1.建構函式繼承 function p0 function children0 通過這種在子類中執行父類的構造函式呼叫,把父類建構函式的 this 指向為子類例項化物件引用,從而導致父類執行的時候父類裡面的屬性都會...
js各種繼承方式彙總
首先定義乙個父類 function animal name animal.prototype.eat function food 特點 1 子類的原型指向父類的例項 缺點 1 無法多繼承 2 無法向父類的構造傳參 3 來自原型物件的引用屬性是所有例項共享的 function cat cat.prot...