ホームページ > ウェブフロントエンド > jsチュートリアル > JavaScript プロトタイプ継承における `new` の役割: `Derived.prototype = new Base` は何ですか?

JavaScript プロトタイプ継承における `new` の役割: `Derived.prototype = new Base` は何ですか?

Mary-Kate Olsen
リリース: 2024-12-24 09:46:20
オリジナル
651 人が閲覧しました

What is the Role of `new` in JavaScript Prototypal Inheritance: `Derived.prototype = new Base`?

「Derived.prototype = new Base」の 'new' の役割を理解する

次のコード スニペットを考えてみましょう。

ここでWidget はコンストラクターを表し、私たちの目標は WeatherWidget と呼ばれる新しい関数でそれを拡張することです。このコンテキストにおける new キーワードの重要性は何ですか?また、省略した場合にどのような影響が生じるでしょうか?

「new」の役割

新しいキーワードは重要な操作を実行します。 Widget をコンストラクターとしてインスタンス化し、その戻り値を WeatherWidget のプロトタイプ プロパティに代入します。 new キーワードが存在しない場合、引数を指定せずに (括弧を省略するなどして) Widget を呼び出すと、未定義の動作が発生します。さらに、ウィジェットの実装がコンストラクターとして呼び出されるように設計されていない場合、このアプローチは誤ってグローバル名前空間を汚染する可能性があります。

継承されたインスタンスの動作

示されているように new キーワードを使用すると、 WeatherWidget は同じ Widget インスタンスから継承し、次のプロトタイプになります。 chain:

この特定の配置は、すべての WeatherWidget インスタンスが Widget インスタンスから継承されたプロパティ値を共有することを目的としている場合に適しています。ただし、ほとんどのシナリオでは、このような共有継承は望ましくありません。

適切なクラスベースの継承

プロトタイプを使用する JavaScript でクラスベースの継承を効果的に実装するには、次のアプローチをお勧めします。

この手法により、WeatherWidget インスタンスがプロトタイプ チェーンを通じてプロパティを適切に継承しますが、インスタンス間でプロパティ値を共有することはありません。中間のダミー コンストラクターからプロトタイプを継承するためです。結果のプロトタイプ チェーンは次のとおりです。

最新の JavaScript 機能の活用

ECMAScript 5 以降に準拠した最新の JavaScript 実装では、次のアプローチが推奨されます。

このアプローチには、列挙不可、構成不可のコンストラクターを作成するという追加の利点があります。 property.

親コンストラクターの呼び出し

最後に、親コンストラクター (この場合は Widget) は子コンストラクター (WeatherWidget) 内からのみ明示的に呼び出されることに注意することが重要です。 apply メソッドまたは call メソッドの使用方法:

以上がJavaScript プロトタイプ継承における `new` の役割: `Derived.prototype = new Base` は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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