Javascript 1.9.3 / ECMAScript 5 führte Object.create ein, eine Methode, die von Douglas Crockford stark befürwortet wurde und andere. Diese Methode bietet eine Alternative zum herkömmlichen Schlüsselwort new beim Instanziieren von Objekten.
Um new durch Object.create zu ersetzen, untersuchen wir den folgenden Code:
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();
Angenommen, MY_GLOBAL.nextId existiert, wir kann UserA mit Object.create wie folgt instanziieren:
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 } });
Ein Vorteil von Object.create gegenüber new besteht darin, dass es eine differenzielle Vererbung ermöglicht. Objekte können Eigenschaften direkt von anderen Objekten erben, ohne dass eine Prototypenkette erforderlich ist. Dies geschieht durch die Übergabe eines Objekts als zweites Argument an Object.create, wo Sie die geerbten Eigenschaften definieren können.
Ein weiterer Vorteil ist die Flexibilität. Mit Object.create können Sie Eigenschaftsattribute (aufzählbar, beschreibbar, konfigurierbar) mithilfe der Syntax der Eigenschaftsdeskriptoren festlegen und so eine bessere Kontrolle über das Verhalten von Objekteigenschaften erhalten.
Das obige ist der detaillierte Inhalt vonObject.create: Eine bessere Möglichkeit, Objekte zu instanziieren als „neu'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!