何時在JavaScript 繼承中避免Child.prototype = Parent.Prototype
雖然在JavaScript 中使用Child.prototype = 繼承是常見的做法new Parent();,在某些情況下Child.prototype = Parent.Prototype 可能會導致意外行為。
考慮以下程式碼片段:
在檢查 Spaceship 建構子時,您會發現你會注意到它的 __proto__ 屬性指向 Spaceship,而不是 GameObject。這是因為以下行:
直接將屬性指派給 this.hitBox,而 GameObject 原型中不存在該屬性。這種行為是有問題的,因為它:
為什麼使用Child.prototype = new Parent() ;相反
Child.prototype = new Parent();其新建立的實例分配給Child 原型。這可以確保:
替代解決方案
在支援Object.create的現代瀏覽器中,您可以使用Spaceship.prototype = Object.create(GameObject.prototype) ;創建子原型。這在功能上等同於 Child.prototype = new Parent();但更簡潔,避免了不必要的建構函式呼叫。
以上是什麼時候應該在 JavaScript 繼承中避免 `Child.prototype = Parent.Prototype`?的詳細內容。更多資訊請關注PHP中文網其他相關文章!