Heim > Web-Frontend > js-Tutorial > Wie funktioniert der „new'-Operator in JavaScript und wie erstellt er Objekte mit ihren Prototypketten?

Wie funktioniert der „new'-Operator in JavaScript und wie erstellt er Objekte mit ihren Prototypketten?

Patricia Arquette
Freigeben: 2024-10-27 21:28:30
Original
312 Leute haben es durchsucht

How does the `new` operator work in JavaScript, and how does it create objects with their prototype chains?

Wie funktioniert der neue Operator in JavaScript?

Der neue Operator spielt eine zentrale Rolle im objektorientierten Programmiersystem von JavaScript. Es ist wichtig, seine Funktionalität zu verstehen, um Objekte effektiv zu erstellen und zu verwalten.

Eintauchen in die Implementierung des neuen Operators

<code class="javascript">new dataObj(args);</code>
Nach dem Login kopieren

Dieser Codeausschnitt nutzt das interne [[ Construct]]-Methode zum Ausführen einer Reihe spezifischer Aktionen:

  1. Objekterstellung:Es initialisiert ein neues natives Objekt.
  2. Einrichtung einer Prototypenkette : Der interne [[Prototyp]] dieses Objekts ist so eingestellt, dass er auf die Eigenschaft Funktionsprototyp zeigt. Insbesondere wenn die Funktionsprototyp-Eigenschaft kein Objekt ist (primitive Werte wie Zahl, Zeichenfolge, Boolescher Wert, Undefiniert oder Null), wird stattdessen Object.prototype als Prototyp verwendet.
  3. Funktionsaufruf: Nach der Erstellung des Objekts wird die Funktion aufgerufen, wobei das neu erstellte Objekt als dieser Wert zugewiesen wird.
  4. Rückgabewertbehandlung: Wenn der Rückgabewert der aufgerufenen Funktion ein Grundelement ergibt , wird das intern erstellte Objekt zurückgegeben. Wenn jedoch ein Objekt zurückgegeben wird, wird das intern erstellte Objekt verworfen.

Eine alternative Implementierung zur Verdeutlichung

Um das Verständnis zu verbessern, finden Sie hier eine alternative Darstellung von was der neue Operator erreicht:

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

  // Check if `f.prototype` is an object, not a primitive
  proto = Object(f.prototype) === f.prototype ? f.prototype : Object.prototype;

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

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

  if (Object(ret) === ret) { // the result is an object?
    return ret;
  }
  return obj;
}

// Example usage:
function Foo (arg) {
  this.prop = arg;
}
Foo.prototype.inherited = 'baz';

var obj = NEW(Foo, 'bar');
obj.prop; // 'bar'
obj.inherited; // 'baz'
obj instanceof Foo // true</code>
Nach dem Login kopieren

In diesem Beispiel:

  • NEW ist eine benutzerdefinierte Funktion, die das Verhalten des neuen Operators simuliert.
  • Sie prüft Wenn es sich bei der Funktionsprototyp-Eigenschaft um ein Objekt handelt, wird die Funktion Object.prototype verwendet.
  • NEW wendet die Funktion auf das neu erstellte Objekt an, da ihr Wert dieser ist.
  • Der Rückgabewert der Funktion bestimmt das endgültige Objekt, das zurückgegeben werden soll.

Das obige ist der detaillierte Inhalt vonWie funktioniert der „new'-Operator in JavaScript und wie erstellt er Objekte mit ihren Prototypketten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage