ホームページ >ウェブフロントエンド >jsチュートリアル >`Child.prototype = Parent.prototype` が JavaScript の継承を壊すのはなぜですか?
Child.prototype = Parent.Prototype が Javascript の継承を壊す可能性があるのはなぜですか?
JavaScript の継承では、次のような継承パターンに遭遇したことがあるかもしれません。 :
function GameObject(oImg, x, y) { // GameObject constructor } Spaceship.prototype = new GameObject(); Spaceship.prototype.constructor = Spaceship;
ただし、継承後に Spaceship.prototype にプロパティを追加すると、予期しない動作が発生することに気付いたかもしれません。 Spaceship のプロトタイプ プロパティは、GameObject ではなく Spaceship に設定されます。
これは、Spaceship.prototype = GameObject.prototype を設定すると、2 つのプロトタイプが同じオブジェクトを参照し始めるために発生します。一方のオブジェクトを変更すると、もう一方のオブジェクトにも影響します。したがって、Spaceship.prototype にプロパティを追加すると、それらのプロパティが GameObject.prototype にも追加されます。
この問題を回避するには、以下を使用できます。
Spaceship.prototype = Object.create(GameObject.prototype);
これにより、GameObject.prototype で新しいオブジェクトが作成されます。そのプロトタイプとして、Spaceship.prototype への変更が GameObject.prototype に影響しないようにします。
または、コンストラクターを呼び出したい場合は、代わりに Spaceship コンストラクター内で GameObject.apply(this, argument) を使用します。上の行
以上が`Child.prototype = Parent.prototype` が JavaScript の継承を壊すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。