ホームページ > ウェブフロントエンド > jsチュートリアル > JavaScript で「new」ではなく「Object.create」を使用する必要があるのはどのような場合ですか?

JavaScript で「new」ではなく「Object.create」を使用する必要があるのはどのような場合ですか?

Linda Hamilton
リリース: 2024-11-21 08:15:10
オリジナル
888 人が閲覧しました

When Should You Use `Object.create` over `new` in JavaScript?

オブジェクトのインスタンス化に「new」ではなく「Object.create」を利用する

JavaScript 1.9.3 および ECMAScript 5 では、「Object.create」 create" メソッドは、従来の "new" キーワードを超えたオブジェクト作成の代替アプローチを提供します。この質問では、「Object.create」を利用してコード例の「new」を置き換える方法を説明します:

var UserA = function(nameParam) {
    this.id = MY_GLOBAL.nextId();
    this.name = nameParam;
}
UserA.prototype.sayHello = function() {
    console.log('Hello '+ this.name);
}
var bob = new UserA('bob');
bob.sayHello();
ログイン後にコピー

Object.create による差分継承について

「Object.create」は、オブジェクトがクラスではなく他のオブジェクトからプロパティを継承する差分継承の実装に大きな利点をもたらします。上記の例では、差分継承は次のように実装できます。

var userB = {
  sayHello: function() {
    console.log('Hello '+ this.name);
  }
};

var bob = Object.create(userB, {
  'id': {
    value: MY_GLOBAL.nextId(),
    enumerable: true
  },
  'name': {
    value: 'Bob',
    enumerable: true
  }
});
ログイン後にコピー

ここで、「bob」は「userB」から「sayHello」メソッドを継承しますが、その「id」と「name」プロパティは個別に初期化されます。 。このアプローチにより、オブジェクト作成の柔軟性が高まります。

オブジェクト プロパティ属性の制御

「Object.create」のもう 1 つの利点は、オブジェクト プロパティの属性 (列挙可能) を制御できることです。 、書き込み可能、​​または構成可能)は、2 番目の引数で使用されるオブジェクト リテラルを通じて行われます。この詳細な制御により、必要に応じてカスタム プロパティの動作と不変性を定義できるようになります。

要約すると、「Object.create」は、差分継承とプロパティ属性制御をサポートすることで、「new」に代わる強力な代替手段を提供し、より優れた柔軟性とプロパティを提供します。 JavaScript でのオブジェクト指向プログラミングのコントロール。

以上がJavaScript で「new」ではなく「Object.create」を使用する必要があるのはどのような場合ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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