JavaScript 1.9.3 / ECMAScript 5 では、Douglas Crockford によって強く提唱されているメソッドである Object.create が導入されました。そしてその他。このメソッドは、オブジェクトをインスタンス化するときに従来の new キーワードの代替手段を提供します。
new を Object.create に置き換えるには、次のコードを調べてみましょう。
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();
MY_GLOBAL.nextId が存在すると仮定すると、
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 } });
new に対する Object.create の利点の 1 つは、差分継承が可能であることです。オブジェクトは、プロトタイプ チェーンを必要とせずに、他のオブジェクトからプロパティを直接継承できます。これは、オブジェクトを 2 番目の引数として Object.create に渡すことによって行われ、そこで継承されたプロパティを定義できます。
もう 1 つの利点は、その柔軟性です。 Object.create を使用すると、プロパティ記述子構文を使用してプロパティ属性 (列挙可能、書き込み可能、構成可能) を設定できるため、オブジェクト プロパティの動作をより詳細に制御できるようになります。
以上がObject.create: オブジェクトをインスタンス化するための「new」よりも良い方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。