オブジェクトのインスタンス化に「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 サイトの他の関連記事を参照してください。