function supertype()
supertype.prototype.getsupervalue = function()
function subtype()
// 繼承supertype
subtype.prototype = new supertype()
let instance = new subtype()
原型鏈繼承的缺點
function supertype()
supertype.prototype.getsupervalue = function()
function subtype()
let instance = new subtype()
建構函式繼承
優點:在子類建構函式中能向父類建構函式傳參
缺點:
function supertype(name)
supertype.prototype.getsupervalue = function()
function subtype(name)
// 繼承方法
subtype.prototype = new supertype()
let instance = new subtype()
組合繼承的缺點
function object(o)
f.prototype = o
return new f()
}let person =
let anotherperson = object(person)
// ecmascript5通過object.create()方法實現跟object() 一樣的效果
let anotherperson2 = object.create(person)
原型式繼承適合於不需要單獨建立建構函式,但是仍然需要在物件間共享資訊的場合
缺點:原型中包含的引用值會在所有例項共享
function createanother(original);
return clone // 返回這個物件
}let person =
let anotherperson = createanother(person)
寄生式繼承與原型式繼承比較相似。它的思路是:建立乙個實現繼承的函式,以某種方式增強物件,然後返回這個物件。object()函式不是寄生式 繼承所必需的,任何返回新物件的函式都可以在這裡使用
缺點:給物件新增的函式會導致函式難以復用
function inheritprototype(subtype, supertype)
function supertype(name)
function subtype(name, age)
inheritprototype(subtype, supertype)
寄生組合繼承的優點:只呼叫了一次supertype的建構函式,避免了subtype上不必要也用不上的屬性 js實現類繼承
為了讓自己能把繼承的實現機制理解得更透徹,還是決定看能不能通過自己的理解講述出來,以下文章如有不妥之處請積極批評指正,感激不盡。我們知道js中一切皆物件,但是當我們把流行的物件導向的語言特性套到js身上時卻略顯尷尬,為啥?js沒有提供繼承機制,這個得我們自己動手來模擬實現。不管是傳統的方法還是所謂的...
js類的繼承
如何實現類的繼承呢?有如下2個建構函式 function peopleclass peopleclass.ptototype function studentclass name,function peopleclass peopleclass.ptototype function studentc...
JS類的繼承
目錄 js類 寫類 繼承get set static 方法static修飾 屬性static修飾 特殊 var v parent new parent console.log v parent 就以上面的parent類為父類,寫乙個studnet繼承他 class student extends p...