首頁 > web前端 > js教程 > 為什麼 `Child.prototype = Parent.prototype` 會破壞 JavaScript 繼承?

為什麼 `Child.prototype = Parent.prototype` 會破壞 JavaScript 繼承?

Barbara Streisand
發布: 2024-11-19 00:55:02
原創
321 人瀏覽過

Why Does `Child.prototype = Parent.prototype` Break JavaScript Inheritance?

為什麼 Child.prototype = Parent.Prototype 可能會破壞 Javascript 繼承?

在Javascript 繼承中,您可能遇到以下繼承模式:

function GameObject(oImg, x, y) {
    // GameObject constructor
}

Spaceship.prototype = new GameObject();
Spaceship.prototype.constructor = Spaceship;
登入後複製

但是,在繼承後向Spaceship.prototype 新增屬性時,您可能已經注意到意外的行為。 Spaceship 的原型屬性設定為 Spaceship 而不是 GameObject。

出現這種情況是因為當您設定 Spaceship.prototype = GameObject.prototype 時,兩個原型開始引用同一個物件。對一個物件的任何修改都會影響另一個物件。因此,向 Spaceship.prototype 新增屬性也會將它們新增至 GameObject.prototype。

要避免此問題,您可以使用:

Spaceship.prototype = Object.create(GameObject.prototype);
登入後複製

這會使用GameObject.prototype 建立一個新物件作為其原型,確保對Spaceship.prototype 的修改不會影響GameObject. prototype。

或者,如果您想呼叫建構函數,請在 Spaceship 建構函數中使用 GameObject.apply(this,arguments) 而不是上面的行。

以上是為什麼 `Child.prototype = Parent.prototype` 會破壞 JavaScript 繼承?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板