Tatsächlich gibt es verschiedene Möglichkeiten, Objekte in JavaScript zu erstellen. Wenn Sie nur ein Objekt erstellen möchten, hat das Erstellen von " konstruktorbasierten " Objekten mit dem Operator " new " keinen Vorteil . Es ist dasselbe wie das Erstellen eines Objekts mit der Syntax " Objektliteral ". " Konstruktorbasierte " Objekte, die mit dem Operator " new " erstellt wurden, sind jedoch unglaublich nützlich, wenn Sie über " prototypische Vererbung " nachdenken . Sie können die Vererbungskette nicht mit Objekten verwalten, die mit Literal-Syntax erstellt wurden. Sie können jedoch eine Konstruktorfunktion erstellen , Eigenschaften und Methoden an den Prototyp anhängen."operator, gibt es ein Objekt zurück, das Zugriff auf alle Methoden und Eigenschaften hat, die mit dem Prototyp dieser Konstruktorfunktion verknüpft sind.
Hier ist ein Beispiel für das Erstellen eines Objekts mithilfe der Konstruktorfunktion (siehe Code-Erklärung unten):
function Person(firstname, lastname) {
this.firstname = firstname;
this.lastname = lastname;
}
Person.prototype.fullname = function() {
console.log(this.firstname + ' ' + this.lastname);
}
var zubaer = new Person('Zubaer', 'Ahammed');
var john = new Person('John', 'Doe');
zubaer.fullname();
john.fullname();
Jetzt können Sie so viele Objekte erstellen, wie Sie möchten, indem Sie die Personenkonstruktionsfunktion instanziieren. Alle Objekte erben den vollständigen Namen () davon.
Hinweis: Das Schlüsselwort " this " bezieht sich auf ein leeres Objekt innerhalb einer Konstruktorfunktion. Wenn Sie mit dem Operator " new " ein neues Objekt aus Person erstellen , wird automatisch ein Objekt zurückgegeben, das alle Eigenschaften und Methoden enthält, die mit dem Schlüsselwort " this " verknüpft sind . Und diese Objekte erben mit Sicherheit die Methoden und Eigenschaften, die mit dem Prototyp der Person-Konstruktorfunktion verbunden sind (was der Hauptvorteil dieses Ansatzes ist).
Übrigens, wenn Sie die gleiche Funktionalität mit der " Objektliteral " -Syntax erhalten möchten, müssen Sie für alle Objekte wie folgt den vollständigen Namen () erstellen:
var zubaer = {
firstname: 'Zubaer',
lastname: 'Ahammed',
fullname: function() {
console.log(this.firstname + ' ' + this.lastname);
}
};
var john= {
firstname: 'John',
lastname: 'Doe',
fullname: function() {
console.log(this.firstname + ' ' + this.lastname);
}
};
zubaer.fullname();
john.fullname();
Wenn Sie jetzt fragen, warum ich den Konstruktorfunktionsansatz anstelle des Objektliteralansatzes verwenden soll :
*** Die prototypische Vererbung ermöglicht eine einfache Vererbungskette, die äußerst nützlich und leistungsfähig sein kann.
*** Es spart Speicher, indem allgemeine Methoden und Eigenschaften geerbt werden, die im Prototyp der Konstruktorfunktionen definiert sind. Andernfalls müssten Sie sie in allen Objekten immer wieder kopieren.
Ich hoffe das macht Sinn.
a = new Object
,a = new Object()
,a = {}
ist, wörtliche viel einfacher und einige Tests ich lief vor einiger Zeit sagen , dass es schneller ist, neuerer Compiler meiner Aussage falsch sein verursacht haben könnte. Gleiches gilt für wörtliche Arrays