Zum Hauptinhalt springen

Wie erstelle ich ein Objekt mit einem bestimmten Prototyp ohne Konstruktorfunktion und Klassen

Das Erstellen von Objekten mit einem bestimmten Prototyp ist ein wichtiger Aspekt der JavaScript-Programmierung. Normalerweise werden Konstruktorfunktionen oder Klassen dazu verwendet.

Es gibt jedoch andere Möglichkeiten, Objekte mit einem bestimmten Prototyp zu erstellen, die flexibler und effizienter sein können. Eine solche Methode ist die Verwendung der Methode Object.create().

Methode Object.create() erstellt ein neues Objekt mit dem angegebenen Prototyp. Als Argument wird ein Prototypobjekt an diese Methode übergeben, das als Prototyp für das neue Objekt fungiert.

Ein Prototypobjekt kann mit einem Objektliteral oder mit einem bereits vorhandenen Objekt erstellt werden. Dadurch können Sie Objekte mit bestimmten Eigenschaften und Methoden erstellen, ohne dass Sie Konstruktorfunktionen oder Klassen verwenden müssen.

Verwenden der Methode Object.create() dies kann besonders nützlich sein, wenn Sie mehrere Objekte mit demselben Prototyp erstellen möchten oder wenn Sie Eigenschaften und Methoden von einem bereits vorhandenen Objekt erben möchten.

Was ist ein Prototyp in JavaScript

Wenn wir auf eine Eigenschaft oder Methode eines Objekts zugreifen, sucht JavaScript zuerst im Objekt selbst danach. Wenn die Eigenschaft nicht gefunden wird, geht sie zum Prototyp des Objekts und sucht dort nach. Wenn die Eigenschaft auch im Prototyp nicht gefunden wird, sucht JavaScript in der Prototypkette weiter, bis sie das Ende der Kette erreicht, wobei der Prototyp das Objekt ist Object.prototype.

Prototypen ermöglichen die Vererbung in JavaScript. Wir können ein neues Objekt erstellen, indem wir ein vorhandenes Objekt als Prototyp verwenden. Dies ermöglicht es uns, die Eigenschaften und Methoden des Prototypobjekts in unserem neuen Objekt zu verwenden, wodurch der Code modularer und wiederverwendbarer wird.

In JavaScript spielen Prototypen eine wichtige Rolle bei der objektorientierten Programmierung. Sie ermöglichen es uns, Objekthierarchien zu erstellen, Funktionalität zu erben und Methoden zu überschreiben. Mit Prototypen können wir effizientere und flexiblere Programme erstellen.

Erstellen eines Prototyps eines Objekts ohne Konstruktorfunktion und Klassen

Ein Prototyp ist ein Objekt, das beim Erstellen neuer Objekte als Vorlage verwendet wird. Der Prototyp enthält Eigenschaften und Methoden, die von Objekten geerbt werden, die darauf basieren.

Um ein Objekt mit einem bestimmten Prototyp zu erstellen, verwenden Sie die Object-Methode.create() muss an diese Methode ein Prototypobjekt übergeben werden. Das neue Objekt wird auf der Grundlage dieses Prototyps erstellt.

Angenommen, wir haben ein Prototyp-Person-Objekt, das die Eigenschaften name und age enthält.

var person = ;

Sie können den folgenden Code verwenden, um ein neues Objekt mit dem Prototyp person zu erstellen:

var person2 = Object.create(person);

Jetzt hat das person2-Objekt die gleichen Eigenschaften und Methoden wie das Person- Objekt.

Verwenden der Object-Methode.create() Sie können Prototypketten erstellen, in denen jedes nachfolgende Objekt Eigenschaften und Methoden vom vorherigen Objekt erbt.

var animal = >;var tiger = Object.create(animal);var lion = Object.create(animal);

Tiger- und Lion-Objekte verfügen jetzt über eine speak() -Methode und eine Sound-Eigenschaft, die von einem animal- Objekt erben.

Verwenden der Object-Methode.mit create() können Sie Objekte mit der gewünschten Prototypstruktur flexibel erstellen, ohne Konstruktorfunktionen und Klassen zu verwenden.

PrototypErstellen von Objekten
personvar person2 = Object.create(person);
animalvar tiger = Object.create(animal);
var lion = Object.create(animal);

Verwenden der Object-Methode.create

Die Object-Methode.mit create in JavaScript können Sie neue Objekte mit einem bestimmten Prototyp erstellen, ohne eine Konstruktorfunktion oder Klassen verwenden zu müssen.

Die Syntax der Object-Methode.create sieht folgendermaßen aus:

Object.create(proto [, propertiesObject ])

Das erste Argument der Methode ist ein Objekt, das als Prototyp für das neue Objekt fungiert. Das zweite Argument kann ein optionales Objekt sein, das die Eigenschaften des neuen Objekts definiert.

Ein Beispiel für die Verwendung der Object-Methode.create :

// Создание объекта с прототипом nullvar obj1 = Object.create(null);// Создание объекта с прототипом от другого объектаvar obj2 = Object.create(< name: 'John', age: 30 >);// Добавление свойства к объектуobj2.surname = 'Doe';

In diesem Beispiel erstellen wir zwei neue Objekte. Im ersten Fall ist der Prototyp eines Objekts ein leeres Objekt, dh es fehlen Methoden und Eigenschaften. Im zweiten Fall ist der Prototyp eines Objekts ein anderes Objekt, das bereits die Eigenschaften name und age definiert hat. Wir fügen dem obj2-Objekt auch eine neue surname-Eigenschaft hinzu.

Die Object-Methode.create ist eine bequeme Möglichkeit, neue Objekte mit einem bestimmten Prototyp zu erstellen. Es erfordert keine Konstruktorfunktion und ermöglicht eine flexiblere Definition der Eigenschaften neuer Objekte.

Kopieren des Prototyps mithilfe der Object-Methode.assign

Wenn Sie ein Objekt mit einem bestimmten Prototyp erstellen müssen, ohne eine Konstruktorfunktion oder Klassen zu verwenden, können Sie die Object-Methode verwenden.assign(). Mit dieser Methode können Sie die Eigenschaften und Methoden eines oder mehrerer Objekte in das Zielobjekt kopieren.

Um ein Objekt mit einem bestimmten Prototyp mit Object zu erstellen.assign() Sie müssen ein leeres Objekt erstellen, das das Ziel ist, und dieses leere Objekt als erstes Argument übergeben. Das zweite Argument wird dann an die Objekte übergeben, deren Eigenschaften und Methoden in das Zielobjekt kopiert werden.

Verwenden Sie Object.assign() zum Kopieren des Prototyps lautet wie folgt:

const proto = >;const obj = Object.assign(Object.create(proto), );

In diesem Beispiel erstellen wir ein Proto-Objekt mit der Methode sayHello(). Dann erstellen wir ein neues obj mit Object.assign() und übergeben als erstes Argument das erstellte Objekt mit dem Prototyp proto. Mit dem zweiten Argument übergeben wir ein Objekt mit der Eigenschaft name. Als Ergebnis erhält obj den Prototyp proto und die Eigenschaft name.

Also die Verwendung der Object-Methode.mit assign() können Sie den Prototyp und die Eigenschaften eines Objekts kopieren, indem Sie ein neues Objekt mit dem gewünschten Prototyp erstellen, ohne auf Konstruktorfunktionen oder Klassen zurückgreifen zu müssen.

Erstellen eines Objekts und Zuweisen eines Prototyps mithilfe der setPrototypeOf-Methode

Mit der setPrototypeOf-Methode können Sie den Prototyp eines Objekts explizit angeben. Das heißt, wir können ein neues Objekt erstellen und ihm einen bestimmten Prototyp zuweisen, der zum Vererben von Eigenschaften und Methoden verwendet wird.

Um ein Objekt mit dem angegebenen Prototyp zu erstellen, müssen Sie zuerst ein leeres Objekt mit dem Literal <> oder mit der Funktion Object erstellen.create(). Verwenden Sie dann die Object-Methode.setPrototypeOf() oder der Zuweisungsoperator __proto__ können wir einem Objekt einen Prototyp zuweisen.

const person = and I'm $ years old.`);>>;const employee = Object.create(person);employee.position = 'Developer';console.log(employee.name); // 'John'console.log(employee.age); // 25console.log(employee.position); // 'Developer'employee.greet(); // 'Hello, my name is John and I'm 25 years old.'
'John'25'Developer''Hello, my name is John and I'm 25 years old.'

In diesem Beispiel haben wir ein Person-Objekt mit den Eigenschaften name, age und greet erstellt. Verwenden Sie dann die Object-Methode.create(person) Wir haben ein neues Employee-Objekt mit dem Prototyp person erstellt. Das employee-Objekt hat auch eine position-Eigenschaft. Wenn Sie die name-, age- und Greet-Eigenschaften eines employee-Objekts aufrufen, erben sie vom Prototyp person.

Mit der Methode setPrototypeOf können wir also ein Objekt mit einem bestimmten Prototyp erstellen, ohne eine Konstruktorfunktion oder Klassen zu verwenden.

Vor- und Nachteile verschiedener Methoden zum Erstellen eines Objekts mit einem bestimmten Prototyp

Eine der häufigsten Methoden zum Erstellen eines Objekts mit einem gegebenen Prototyp ist die Verwendung einer Konstruktorfunktion. Mit diesem Ansatz können Sie ein Objekt mit einem bestimmten Prototyp erstellen, es hat jedoch den Nachteil, dass für jedes erstellte Objekt eine Konstruktorfunktion definiert und aufgerufen werden muss.

Eine andere Möglichkeit besteht darin, Klassen zu verwenden, die syntaktischen Zucker bereitstellen, um Objekte mit einem gegebenen Prototyp zu erstellen. Die Verwendung von Klassen erfordert jedoch die Unterstützung moderner Browser oder die Verwendung von Code-Transpilation.

Wenn Sie die Verwendung einer Konstruktorfunktion oder einer Klasse vermeiden möchten, können Sie die Object-Methode verwenden.create(). Mit dieser Methode können Sie Objekte mit einem bestimmten Prototyp erstellen, ohne einen Konstruktor definieren zu müssen. Dieser Ansatz hat die Einfachheit und Lesbarkeit des Codes, hat aber den Nachteil, dass er in älteren Browsern nicht unterstützt wird.

ArtVorteileNachteile
Konstruktor-Funktion- Einfaches Erstellen von Objekten mit einem bestimmten Prototyp- Für jedes erstellte Objekt muss eine Konstruktorfunktion definiert und aufgerufen werden
Klassen- Stellen Sie syntaktischen Zucker bereit, um Objekte mit einem gegebenen Prototyp zu erstellen- Erfordert die Unterstützung moderner Browser oder die Verwendung von Code-Transpilation
Object.create()- Einfachheit und Lesbarkeit des Codes- Wird in älteren Browsern nicht unterstützt

Die Auswahl der Methode zum Erstellen eines Objekts mit dem angegebenen Prototyp hängt von den spezifischen Projektanforderungen und den unterstützten Browsern ab. Jede dieser Methoden hat ihre eigenen Vor- und Nachteile, und Sie sollten diejenige auswählen, die am besten für Ihre Bedürfnisse geeignet ist.

Merkmale der Vererbung in JavaScript

  • Prototypische Vererbung - in JavaScript erben Objekte die Eigenschaften und Methoden anderer Objekte, die Prototypen genannt werden. Beim Zugriff auf eine Eigenschaft oder Methode eines Objekts sucht JavaScript zuerst im Objekt selbst und dann in seinem Prototyp und seiner Prototypkette nach ihnen.
  • Konstrukteure und Prototypen - wenn Sie ein Objekt über eine Konstruktorfunktion erstellen, wird für dieses Objekt automatisch ein Prototyp erstellt, der durch die Eigenschaft "prototype" der Konstruktorfunktion bestimmt wird.
  • Ändern und Hinzufügen von Prototypeigenschaften und -methoden - prototypeigenschaften und -methoden können auch nach der Erstellung des Objekts geändert und hinzugefügt werden. Die Änderungen werden auf allen Objekten widergespiegelt, die diesen Prototyp erben.
  • Referenzstruktur verstehen - wenn Sie mit Prototypen arbeiten, müssen Sie verstehen, dass das Ändern des Prototyps eines einzelnen Objekts alle Objekte beeinflussen kann, die diesen Prototyp erben. Daher ist es wichtig, beim Ändern von Prototypen vorsichtig zu sein.

Wenn Sie die Funktionen der Vererbung in JavaScript verstehen, können Sie Prototypen effizient zum Erstellen von Objekthierarchien und zur Wiederverwendung von Code verwenden.

Prinzipien der Prototypvererbung

Es gibt zwei Hauptprinzipien der Prototypvererbung:

1. Prototypvererbung: Jedes Objekt verweist auf ein anderes Objekt, das als Prototyp bezeichnet wird. Wenn keine Eigenschaft oder Methode in einem Objekt gefunden wird, wird sie im Prototyp gesucht. Wenn der Prototyp ebenfalls nicht gefunden wird, wird die Suche im Prototyp des Prototyps fortgesetzt und so weiter.

2. Prototypkette: Objekte in JavaScript können mehr als einen Prototyp haben. Wenn eine Eigenschaft oder Methode im ersten Prototyp nicht gefunden wird, wird sie im zweiten, dann im dritten und so weiter gesucht, bis das Ende der Kette gefunden oder erreicht ist. Dadurch können Sie eine flexiblere Vererbungshierarchie erstellen.

Prototypvererbung ist einer der wichtigsten Mechanismen in JavaScript, mit dem Sie Objekte mit bestimmten Eigenschaften und Methoden erstellen können, ohne Konstruktorfunktionen und Klassen verwenden zu müssen. Dies macht JavaScript flexibel und einfach zu entwickeln, sodass Sie Objekte je nach Ihren spezifischen Anforderungen auf unterschiedliche Weise erstellen und bearbeiten können.

Ändern des Prototyps eines Objekts

Ein Prototyp eines Objekts in JavaScript definiert sein "übergeordnetes" Objekt, von dem Eigenschaften und Methoden erben. Standardmäßig wird jedes Objekt mit dem Prototyp Object erstellt.ein prototype, der grundlegende Methoden und Eigenschaften enthält.

Das Ändern des Prototyps eines Objekts kann nützlich sein, wenn Sie zusätzliche Methoden und Eigenschaften hinzufügen oder das Verhalten bestehender Objekte ändern müssen.

Sie können die Object-Methode verwenden, um den Prototyp zu ändern.create(). Es ermöglicht Ihnen, ein neues Objekt mit dem angegebenen Prototyp zu erstellen. Zum Beispiel, um ein Objekt mit einem Array-Prototyp zu erstellen.prototype:

let myArray = Object.create(Array.prototype);

Jetzt verfügt das myArray-Objekt über alle Methoden und Eigenschaften des Array-Prototyps.prototype. Wenn Sie die Methoden myArray aufrufen, werden sie auf die gleiche Weise ausgeführt wie für ein normales Array.

Sie können auch den Prototyp eines bereits vorhandenen Objekts mit der Object-Methode ändern.setPrototypeOf(). Zum Beispiel, um den Prototyp eines MyObject-Objekts in ein Object zu ändern.prototype:

let myObject = < name: "John" >;Object.setPrototypeOf(myObject, Object.prototype);

Jetzt verfügt das MyObject-Objekt über einen Prototyp Object.prototype und erben seine Methoden und Eigenschaften.

Das Ändern des Prototyps eines Objekts kann bei der Entwicklung ein nützliches Werkzeug sein, aber es sollte darauf geachtet werden, die Integrität und Berechenbarkeit des Programms nicht zu beeinträchtigen.