JavaScript es ist eine prototyporientierte Programmiersprache, die auf Objekten basiert. Ein Prototyp ist ein Mechanismus, mit dem Objekte Eigenschaften und Methoden anderer Objekte erben können. Im Standard-JavaScript gibt es mehrere Möglichkeiten, Objekte mit einem bestimmten Prototyp zu erstellen, z. B. die Verwendung von Konstruktorfunktionen und Klassen. Es gibt jedoch eine andere Möglichkeit, Objekte ohne Konstruktoren und Klassen zu erstellen.
Um ein Objekt mit einem bestimmten Prototyp ohne Konstruktorfunktion und Klassen zu erstellen, können Sie die Methode verwenden Object.create(proto). Diese Methode erstellt ein neues Objekt, das prototypisch mit dem angegebenen Objekt verknüpft ist proto. Das heißt, das neue Objekt erbt die Eigenschaften und Methoden des angegebenen Prototyps.
Beispiel für die Verwendung der Methode Object.create(proto) sieht wie folgt aus:
const obj = Object.create(proto);
obj.greet(); // Wird 'Hallo!'
In diesem Beispiel definieren wir ein Objekt proto, die die Methode enthält greet(). Dann verwenden Sie die Methode Object.create() wir erstellen ein neues Objekt obj, die die Eigenschaften und Methoden eines Objekts erbt proto. Als Ergebnis können wir die Methode aufrufen greet() vor Ort obj und das erwartete Ergebnis erhalten.
Also mit der Methode Object.create(proto) Sie können Objekte mit einem bestimmten Prototyp erstellen, ohne dass eine Konstruktorfunktion oder eine Klasse benötigt wird. Diese Methode ist flexibel und ermöglicht das einfache Erben von Eigenschaften und Methoden anderer Objekte.
Erstes Verständnis von Prototypen in JavaScript
Jedes Objekt in JavaScript hat einen Prototyp, der eine Referenz auf ein anderes Objekt darstellt. Alle Eigenschaften und Methoden, die sich nicht direkt im Objekt selbst, sondern in seinem Prototyp befinden, werden über die Prototypkette verfügbar gemacht.
Mithilfe von Prototypen können Sie neue Objekte basierend auf bereits vorhandenen Objekten erstellen und deren Eigenschaften und Methoden erben. Auf diese Weise ermöglicht die Idee von Prototypen eine effiziente Wiederverwendung von Code und reduziert deren Duplizierung.
Sie können die Object-Methode verwenden, um ein Objekt mit einem bestimmten Prototyp in JavaScript zu erstellen.create(). Es nimmt ein einzelnes Argument an - ein Prototyp-Objekt und erstellt ein neues Objekt, das auf diesen Prototyp verweist.
Um beispielsweise ein Objekt mit dem Prototyp eines Person-Objekts zu erstellen, können Sie den folgenden Code verwenden:
const person = >;const john = Object.create(person);john.name = 'John';
Dadurch wird ein neues john-Objekt erstellt, das die Eigenschaft greet() vom Prototyp person erbt. Daher können Sie die greet() -Methode für das john-Objekt wie folgt aufrufen:
Das Verständnis von Prototypen ist ein wichtiger Aspekt beim Erlernen von JavaScript, da sie die Funktionsweise von Objekten und ihre Interaktion mit anderen Teilen des Codes beeinflussen. Viel Spaß beim Erlernen und Entwickeln von Prototypen!
Wie erstelle ich ein Objekt mit einem bestimmten Prototyp mit der Object-Methode?create()
Um ein Objekt mit einem bestimmten Prototyp zu erstellen, verwenden Sie Object.create() Sie müssen das erste Argument an das Objekt übergeben, das als Prototyp des zu erstellenden Objekts fungiert. Mit dem zweiten optionalen Argument können Sie zusätzliche Eigenschaften für das neue Objekt definieren.
Rückgabewert der Methode Object.create() - dies ist ein neues Objekt, bei dem der angegebene Wert ein Prototyp ist. Das neue Objekt hat Zugriff auf alle im Prototyp definierten Eigenschaften und Methoden.
Beispiel für die Verwendung der Methode Object.create():
const person = !`;>>;const john = Object.create(person, >);
Im obigen Beispiel ist das Objekt person definiert eine Methode greet, die eine Begrüßungsnachricht mit dem Eigenschaftswert zurückgibt name. Dann verwenden Sie die Methode Object.create() ein neues Objekt wird erstellt john, die einen Prototyp von einem Objekt erhält person. Eigenschaft name mit dem angegebenen Wert kann "John" auch dem neuen Objekt hinzugefügt werden.
Methodenaufruf greet() für ein Objekt john gibt die erwartete Begrüßungsnachricht zurück. Auch die Überprüfung mit Hilfe von Operatoren instanceof und __proto__ zeigt an, dass das Objekt john ist eine Instanz eines Objekts person und hat eine prototypische Beziehung.
Vorteile der Verwendung von Object.create() anstelle von Konstruktorfunktionen und Klassen
- Einfachheit und Übersichtlichkeit: Object.create() bietet eine einfachere und verständlichere Möglichkeit, Objekte mit dem gewünschten Prototyp zu erstellen. Es ist nicht notwendig, komplexe Konstrukte und die Syntax von Konstruktorfunktionen oder Klassen zu verwenden.
- Flexibilität und Skalierbarkeit: Object.mit create() können Sie Objekte mit jedem Prototyp erstellen. Das bedeutet, dass Sie Objekte mit unterschiedlichen Eigenschaften und Methoden erstellen können, ohne nur auf einen bestimmten Prototyp beschränkt zu sein.
- Vererbung, ohne eine neue Prototyp-Instanz zu erstellen: Bei Verwendung von Object.create() Sie können Eigenschaften und Methoden von einem einzelnen Objekt erben, ohne eine neue Prototyp-Instanz erstellen zu müssen, was bei der Reduzierung der Speicherauslastung und der Verbesserung der Leistung helfen kann.
- Prototypische Programmierung: Object.create() ermöglicht die Verwendung von Prototypprogrammierung, was ein leistungsfähiger und flexibler Entwicklungsansatz ist. Dieser Ansatz basiert auf der Verwendung von Objekten als Prototypen für andere Objekte, wodurch die Arbeit mit dem Code vereinfacht und neue Eigenschaften und Methoden leicht hinzugefügt werden können.
- Unterstützung in allen modernen Browsern: Object.create() ist eine Standardfunktion in JavaScript und wird von allen modernen Browsern unterstützt. Dies bedeutet, dass Sie Object verwenden können.create() ist sicher und wendet es in Ihren Projekten an, ohne die Kompatibilität mit verschiedenen Browsern überprüfen zu müssen.
Am Ende ist die Verwendung von Object.create() bietet eine einfachere, flexiblere und skalierbarere Möglichkeit, Objekte mit dem gewünschten Prototyp zu erstellen. Dies hilft, den Entwicklungsprozess zu verbessern, erleichtert die Codeunterstützung und verbessert die Anwendungsleistung.
Wie füge ich Eigenschaften und Methoden zu einem Objekt mit einem bestimmten Prototyp hinzu
Wenn Sie ein Objekt mit einem bestimmten Prototyp haben und neue Eigenschaften und Methoden hinzufügen müssen, gibt es mehrere Möglichkeiten, ein solches Ergebnis zu erzielen.
Der erste Weg besteht darin, die Object-Methode zu verwenden.create() , mit dem Sie ein neues Objekt mit dem angegebenen Prototyp erstellen können. Als nächstes können Sie dem erstellten Objekt Eigenschaften und Methoden mithilfe der normalen Objektsyntax hinzufügen:
const prototype = >;const obj = Object.create(prototype);obj.newProperty = "new value";obj.newMethod = function() ;console.log(obj.property); // "value"obj.method(); // "Method called"console.log(obj.newProperty); // "new value"obj.newMethod(); // "New method called"
"value""Method called""new value""New method called"
Die zweite Möglichkeit besteht darin, die Object-Methode zu verwenden.assign() , mit dem Sie mehrere Objekte zu einem kombinieren können. Erstellen Sie zuerst ein neues Objekt mit dem angegebenen Prototyp und kombinieren Sie es dann mit dem Objekt, das die neuen Eigenschaften und Methoden enthält:
const prototype = >;const obj = Object.assign(Object.create(prototype), >);console.log(obj.property); // "value"obj.method(); // "Method called"console.log(obj.newProperty); // "new value"obj.newMethod(); // "New method called"
"value""Method called""new value""New method called"
Mit diesen beiden Methoden können Sie Eigenschaften und Methoden zu einem Objekt hinzufügen, indem Sie einen bestimmten Prototyp verwenden. Wählen Sie je nach Ihrer Situation und Ihren Vorlieben das Richtige für Sie aus.
So ändern Sie den Prototyp eines vorhandenen Objekts
In JavaScript hat jedes Objekt seinen eigenen Prototyp, der eine Reihe von Eigenschaften und Methoden definiert, die für das Objekt verfügbar sind. Manchmal ist es notwendig, den Prototyp eines bereits vorhandenen Objekts zu ändern. Es gibt mehrere Möglichkeiten, dies zu erreichen.
1. Verwenden der Methode Object.setPrototypeOf():
const obj = ;const newProto = >;Object.setPrototypeOf(obj, newProto);obj.sayHi(); // Выведет: "Hello World"
2. Verwenden des Operators Object.create():
const obj = ;const newProto = >;const newObj = Object.create(newProto);newObj.foo = obj.foo;newObj.bar = obj.bar;newObj.sayHi(); // Выведет: "Hello World"
3. Verwenden der Objektliteralsyntax:
const obj = ;const newProto = >;newProto.sayHi(); // Выведет: "Hello World"
Das Ändern des Prototyps eines vorhandenen Objekts kann in Situationen nützlich sein, in denen Sie neue Methoden oder Eigenschaften hinzufügen oder vorhandene ändern möchten, ohne ein neues Objekt zu erstellen.
Vergleich der Objekterstellung mit einem bestimmten Prototyp ohne Konstruktorfunktion und Klassen mit Konstruktorfunktion und Klassen
Wenn Sie ein Objekt mit einem bestimmten Prototyp ohne Konstruktorfunktion oder Klassen erstellen, können Sie die Methode verwenden Object.create(). Dazu muss ein Prototypobjekt als Argument übergeben werden. Diese Methode erstellt ein neues Objekt, indem es seinen Prototyp auf das übergebene Objekt setzt.
Zum Beispiel könnte es so aussehen:
const prototypeObject = < property: 'value', method() < return this.property; >>; const newObject = Object.create(prototypeObject);
Auf diese Weise wird ein neues newObject erstellt, das Eigenschaften und Methoden vom prototypeObject erbt.
Die Verwendung einer Konstruktorfunktion oder einer Klasse vereinfacht den Code jedoch erheblich und ist lesbarer. Wenn Sie eine Konstruktorfunktion verwenden, wird ein Objekt mit dem new-Operator instanziiert und sein Prototyp mit der prototype-Eigenschaft festgelegt.
Beispiel für die Verwendung einer Konstruktorfunktion:
function PrototypeObject() < this.property = 'value'; >PrototypeObject.prototype.method = function() < return this.property; >; const newObject = new PrototypeObject();
Wenn Sie Klassen verwenden, wird ein Objekt mit einem bestimmten Prototyp erstellt, indem Sie eine Klasse mit dem Schlüsselwort class definieren. Anschließend wird mit dem Operator new eine Instanz des Objekts erstellt. Verwenden Sie die Methode, um den Prototyp einer Klasse festzulegen extends.
Beispiel für die Verwendung von Klassen:
class PrototypeObject < constructor() < this.property = 'value'; >method() < return this.property; >> const newObject = new PrototypeObject();
Als Ergebnis erhalten wir unabhängig davon, wie ein Objekt mit einem bestimmten Prototyp erstellt wird, ein neues Objekt, das Eigenschaften und Methoden vom Prototyp erbt. Die Wahl der Methode hängt von den Vorlieben des Entwicklers und den Besonderheiten des jeweiligen Projekts ab.