ホームページ > ウェブフロントエンド > jsチュートリアル > Child.prototype = Parent.prototype が JavaScript の継承にとって悪い考えであるのはなぜですか?

Child.prototype = Parent.prototype が JavaScript の継承にとって悪い考えであるのはなぜですか?

DDD
リリース: 2024-11-13 16:09:02
オリジナル
773 人が閲覧しました

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 プロトタイプのコピーを作成し、GameObject.prototype に影響を与えることなく Spaceship.prototype を変更できるようにします。これにより、必要な継承関係を維持しながら、オブジェクト階層の独立性とカプセル化が維持されます。

以上がChild.prototype = Parent.prototype が JavaScript の継承にとって悪い考えであるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート