JavaScript プロトタイプの拡張と上書きの違いは何ですか?

Mary-Kate Olsen
リリース: 2024-11-25 02:45:11
オリジナル
552 人が閲覧しました

What are the Differences Between Extending and Overwriting JavaScript Prototypes?

JavaScript プロトタイプの定義: 2 つの構文とその影響の調査

JavaScript では、プロトタイプを定義すると、オブジェクトに動作を追加する便利な方法が提供されます。プロトタイプ定義には 2 つの共通の構文があり、機能的に異なる場合があります。

オプション 1: 既存のプロトタイプの拡張

Person.prototype.sayName = function(name) {
   alert(name);
}
ログイン後にコピー

この構文は、既存のプロトタイプ オブジェクトを拡張します。新しいプロパティ (sayName) とそれに割り当てられた関数を使用します。この定義より前にインスタンス化されたオブジェクトは、新しいメソッドを継承できます。

オプション 2: プロトタイプを上書きする

Person.prototype = {
   sayName: function(name) {
      alert(name);
   }
}
ログイン後にコピー

ここでは、プロトタイプ オブジェクト全体が新しいものに置き換えられます。 、sayName メソッドのみが含まれています。これにより、暗黙的にバインドされたコンストラクター プロパティを含む、既存のプロトタイプ プロパティがすべて上書きされます。

機能の違い

  • オプション 1 (拡張): オブジェクトプロトタイプ定義が新しいsayNameを継承する前に作成される
  • オプション 2 (上書き): プロトタイプの上書き後にインスタンス化されたオブジェクトのみが新しいプロトタイプを使用します。

利点と欠点

  • オプション 1 (拡張) が望ましい: これはよりクリーンで、既存のプロトタイプのプロパティを維持します。これは、外部クラスのプロトタイプを変更する場合に不可欠です。
  • オプション 2 (上書き) を回避します: コンストラクター プロパティが破棄され、既存のプロトタイプ チェーンが中断される可能性があります。

の代替構文拡張:

上書きせずによりクリーンなオブジェクト リテラル構文を得るには、Object.assign:

Object.assign(Person.prototype, {
   sayName: function(name) {
      alert(name);
   }
});
ログイン後にコピー
の使用を検討してください。

以上がJavaScript プロトタイプの拡張と上書きの違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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