1.原型鏈繼承
grand.prototype.lastname = "yang";
function
grand
()var grand = new grand();
father.prototype = grand;
function
father
()var father = new father();
son.prototype = father;
function
son()
缺點:
(1)過多地繼承了沒用的屬性
(2)不支援多繼承,子類只能繼承自乙個父類
(3)建立子類例項時,無法向父類建構函式傳參
function
缺點:person
(name,age,***)
function
student
(name,age,***,grade)
(1)不能借用建構函式的原型
(2)每次建構函式都要多走乙個函式,增加了函式呼叫。
3.公有原型
father.prototype.lastname = "yang";
function
father
()function
son()
son.prototype = father.prototype;
var father = new father();
var son = new son();
缺點:
不能隨便改動自己的原型,乙個改了,另乙個也會跟著改。
4.聖杯模式
var inherit = (function();
return
function
(target,origin)());
缺點:perfect
5.例項繼承
function
father
(){};
function
son(name)
var son = new son();
缺點:
(1)返回的例項是父類的,而不是子類本身的。
(2)不支援多繼承。
6.拷貝繼承
function
father
(){};
function
son(name)
this.name = name;
}var son = new son();
缺點:
(1)效率低,佔記憶體
(2)無法獲取父類不可列舉的方法
7.組合繼承
function
father
(name){};
function
son()
son.prototype = new father();
son.prototype.constructor = son;
var son = new son();
缺點:
呼叫了兩次父類建構函式。
8.寄生組合繼承:
組合繼承 + 聖杯模式
(本文**)[
1.原型鏈繼承
grand.prototype.lastname = "yang";
function
grand
()var grand = new grand();
father.prototype = grand;
function
father
()var father = new father();
son.prototype = father;
function
son()
原生js實現繼承的三種方式
function parent name,age function child name,age,gender const ming newchild ming 18 男 console.log ming 2 原型鏈繼承 優點 實現了原型物件內的函式復用.缺點 雖然得到了屬性值,但無法在例項物件內靈...
js繼承的7種方式
突然發現自己好久沒有更新部落格,今天剛好研究js的繼承,感覺挺有意思的,特拿來給大家分享一下。列印結果 這種方式的缺點是 1.使用call方法列印結果 缺點 1.不能繼承借用建構函式的原型上的屬性和方法 2.每次建構函式都要多執行乙個函式,降低開發效率。2 只能繼承父類私有的屬性或者方法 因為這樣是...
js繼承的6種方式
想要繼承,就必須要提供個父類,繼承誰,提供繼承的屬性 function person name person.prototype.age 10 給建構函式新增了原型屬性function per per.prototype newperson var per1 newper console.log p...