首頁  >  文章  >  web前端  >  為什麼 Child.prototype = Parent.prototype 對於 JavaScript 繼承來說是個壞主意?

為什麼 Child.prototype = Parent.prototype 對於 JavaScript 繼承來說是個壞主意?

DDD
DDD原創
2024-11-13 16:09:02711瀏覽

Why is Child.prototype = Parent.prototype a Bad Idea for JavaScript Inheritance?

JavaScript 中的繼承:為什麼不使用 Child.prototype = Parent.prototype?

在 JavaScript 中,可以透過委託來實現繼承,使用Child.prototype = new Parent();將子原型連結到父原型的新實例。但是,設定 Child.prototype = Parent.prototype 會產生意外行為。

此賦值將 Child.prototype 的 proto 屬性設為 Parent.prototype。這意味著對 Child.prototype 或 Parent.prototype 所做的任何更改都會影響另一個物件的原型。這種行為是有問題的,因為它破壞了單獨物件層次結構的封裝和獨立性。

在提供的範例中,在 Spaceship 建構子中指派 this.hitBox.width 和 this.hitBox.height 會導致不同的結果,取決於繼承方法。當使用 Spaceship.prototype = new GameObject(); 時,Spaceship 的 this.proto 屬性被設定為 GameObject,而當使用 Spaceship.prototype = GameObject.prototype 時,this.proto 被設定為 Spaceship。

相反這些方法中,使用 Spaceship.prototype = Object.create(GameObject.prototype);建立 GameObject 原型的副本,允許對 Spaceship.prototype 進行更改而不影響 GameObject.prototype。這保持了物件層次結構的獨立性和封裝性,同時保留了所需的繼承關係。

以上是為什麼 Child.prototype = Parent.prototype 對於 JavaScript 繼承來說是個壞主意?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn