如果要實作物件A繼承B,B繼承C,除了把B的實例賦值成A的原型,除了把C的實例賦值成B的原型,有沒有別的實作方式?本人初學者,沒有查到相關的資料,請指教
大家讲道理2017-05-19 10:39:35
換句話說,是否可以把你的問題理解為:“除了原型繼承,javascript還有什麼繼承方式?”,如果是這樣,答案是否,因為javascript的繼承就是基於原型鏈的機制實現的。
如果是問原型繼承的寫法,那倒是有幾種:
1)new構造函數創建;(即問題裡提到的這種)
2)Object.create;
1)物件字面量;
具體用法,資料就很多了:
https://developer.mozilla.org...
伊谢尔伦2017-05-19 10:39:35
除了原型繼承還有js提供的API:call和apply將this的指向改變,借用方法
call用法:
a.call(b,pro1,pro2,...)
apply用法:
a.apply(b,[pro1,pro2,...])
兩者差異在於前者傳遞參數的方式是一個一個傳遞,後者傳遞參數的方式是透過傳遞數組,然後鋪開來
這兩者還有其他用法,例如講偽數組轉換為真數組:
Object.prototype.tostring.call(偽數組)