Heim >Web-Frontend >js-Tutorial >Object.create: Eine bessere Möglichkeit, Objekte zu instanziieren als „neu'?

Object.create: Eine bessere Möglichkeit, Objekte zu instanziieren als „neu'?

Linda Hamilton
Linda HamiltonOriginal
2024-11-16 20:02:03964Durchsuche

Object.create: A Better Way to Instantiate Objects Than `new`?

Object.create: Eine neue Möglichkeit, Objekte zu instanziieren

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
    }
});

Vorteile von Object.create

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn