JavaScript-Vererbung: Object.create vs. new
In JavaScript kann die Vererbung durch verschiedene Methoden erreicht werden. Zwei häufig diskutierte Ansätze sind die Verwendung des Schlüsselworts new und Object.create. Bei der Erkundung der Vererbung kann die schiere Anzahl der verfügbaren Optionen entmutigend sein.
Um die am häufigsten akzeptierte Methode zum Erreichen der Vererbung in JavaScript zu verdeutlichen, untersuchen wir die Unterschiede zwischen Object.create und new.
Object.create
Object.create wird verwendet, um ein neues Objekt zu erstellen, das von einem anderen Objekt erbt. Die Konstruktorfunktion des übergeordneten Objekts wird nicht aufgerufen. Dies ist nützlich, wenn Sie nur ein neues Objekt erstellen möchten, das bestimmte Eigenschaften und Methoden von einem übergeordneten Objekt erbt.
const baseModel = { property1: "value1", method1: function() {} }; const newModel = Object.create(baseModel);
In diesem Beispiel erbt newModel die Eigenschaft1 und Methode1 von baseModel.
new
Das Schlüsselwort new ruft die Konstruktorfunktion einer Klasse oder eines Objekts auf und erstellt eine neue Instanz dieser Klasse oder dieses Objekts. Es ruft die Konstruktorfunktion auf und initialisiert somit das neue Objekt mit bestimmten Eigenschaften und Methoden.
class BaseModel { constructor(property1) { this.property1 = property1; } method1() {} } const newModel = new BaseModel("value1");
In diesem Beispiel ist newModel eine Instanz der BaseModel-Klasse, wobei die Eigenschaft1 auf „value1“ initialisiert ist.
Den richtigen Ansatz wählen
Die Wahl zwischen Object.create und new hängt davon ab, ob Sie ein neues Objekt erstellen müssen, das Eigenschaften und Methoden erbt, oder die Konstruktorfunktion des übergeordneten Objekts aufrufen müssen Objekt.
Im gegebenen Szenario möchten Sie ein Basisobjektmodell haben, das Sie mit RestModel oder LocalStorageModel erweitern können. Die Verwendung von Object.create (oder seinem Shim) ist der richtige Weg, da Sie keine neue Instanz von Model erstellen und seinen Konstruktor aufrufen möchten.
RestModel.prototype = Object.create(Model.prototype);
Wenn Sie den Model-Konstruktor für RestModels aufrufen möchten, Verwenden Sie stattdessen call() oder apply():
function RestModel() { Model.call(this); // apply Model's constructor on the new object ... }
Das obige ist der detaillierte Inhalt vonObject.create vs. new: Wann sollte Which für die JavaScript-Vererbung verwendet werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!