Heim >Web-Frontend >js-Tutorial >Wie arbeitet der „new'-Operator hinter den Kulissen, um Objekte in JavaScript zu erstellen und zu initialisieren?

Wie arbeitet der „new'-Operator hinter den Kulissen, um Objekte in JavaScript zu erstellen und zu initialisieren?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-29 03:21:02555Durchsuche

How does the `new` operator work behind the scenes to create and initialize objects in JavaScript?

Wie der neue Operator Objekte in JavaScript erstellt und initialisiert

Der neue Operator ist ein leistungsstarkes Schlüsselwort in JavaScript, das zum Erstellen neuer Objekte verwendet wird. Es spielt eine entscheidende Rolle in der objektorientierten Programmierung, kann jedoch schwierig zu verstehen sein, insbesondere in Bezug auf die Prototypenkette.

Den neuen Operator verstehen

Bei der Verwendung Beim neuen Operator mit einer Funktion laufen intern die folgenden Schritte ab:

  1. Ein neues natives Objekt wird erstellt.
  2. Die interne [[Prototype]]-Eigenschaft des Objekts wird auf gesetzt Prototypeigenschaft der Funktion.
  3. Die Funktion wird mit dem neu erstellten Objekt als diesem Wert aufgerufen.
  4. Wenn die Funktion einen primitiven Wert zurückgibt, wird das intern erstellte Objekt zurückgegeben.
  5. Andernfalls wird das intern erstellte Objekt aufgegeben, wenn die Funktion ein Objekt zurückgibt.

Eine Beispielimplementierung

Um die Funktionalität des neuen Operators zu demonstrieren, Hier ist eine entsprechende Implementierung:

<code class="javascript">function NEW(f) {
  let obj, ret, proto;

  // Check if `f.prototype` is an object
  proto = f.prototype ? f.prototype : Object.prototype;

  // Create an object inheriting from `proto`
  obj = Object.create(proto);

  // Call the function with `obj` as `this`
  ret = f.apply(obj, Array.prototype.slice.call(arguments, 1));

  // Return the object from the function or the newly created `obj`
  return Object(ret) === ret ? ret : obj;
}</code>

Beispielverwendung

Betrachten Sie dieses Beispiel:

<code class="javascript">function Foo(arg) {
  this.prop = arg;
}
Foo.prototype.inherited = 'baz';

let obj = NEW(Foo, 'bar');
console.log(obj.prop); // Output: "bar"
console.log(obj.inherited); // Output: "baz"
console.log(obj instanceof Foo); // Output: true</code>

Dies zeigt, wie der neue Operator ein Objekt erstellt die vom Prototyp der Funktion erbt und den Zugriff auf ihre Eigenschaften und Methoden ermöglicht.

Das obige ist der detaillierte Inhalt vonWie arbeitet der „new'-Operator hinter den Kulissen, um Objekte in JavaScript zu erstellen und zu initialisieren?. 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