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 プロトタイプのコピーを作成し、GameObject.prototype に影響を与えることなく Spaceship.prototype を変更できるようにします。これにより、必要な継承関係を維持しながら、オブジェクト階層の独立性とカプセル化が維持されます。
以上がChild.prototype = Parent.prototype が JavaScript の継承にとって悪い考えであるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。