Heim  >  Artikel  >  Web-Frontend  >  Wie funktioniert der „new“-Operator in JavaScript intern und was sind die wichtigsten Schritte bei der Objekterstellung mit diesem Operator?

Wie funktioniert der „new“-Operator in JavaScript intern und was sind die wichtigsten Schritte bei der Objekterstellung mit diesem Operator?

DDD
DDDOriginal
2024-10-28 16:49:30543Durchsuche

How does the

Das Innenleben des „neuen“ Operators in JavaScript verstehen

Gilt als einer der rätselhaften Aspekte von JavaScript, dem „neuen“ Operator hat Entwickler für seine Rolle bei der Objekterstellung fasziniert. Dieser Artikel befasst sich mit dem komplizierten Mechanismus des „neuen“ Operators und enthüllt sein Wesen durch eine alternative Implementierung.

Die Funktion hinter dem „neuen“ Operator

Der „neue“ Der Operator ruft intern die Methode [[Construct]] der darauf folgenden Funktion auf. Diese Methode spielt eine zentrale Rolle im Objekterstellungsprozess:

  1. Objektinitialisierung:

    • Sie initialisiert ein makelloses, natives JavaScript-Objekt .
  2. Prototypverknüpfung:

    • Es stellt eine Verbindung zwischen der internen [[Prototyp]]-Eigenschaft des neu erstellten Objekts her und die Prototypeigenschaft der Funktion.
    • Wenn die Prototypeigenschaft der Funktion kein Objekt ist, entscheidet sie sich stattdessen für Object.prototype.
  3. Funktionsaufruf :

    • Die mit dem „neuen“ Operator verknüpfte Funktion wird ausgeführt, wobei das neu erstellte Objekt als „dieser“ Wert verwendet wird.

Das Rückgabewert-Rätsel

Das Ergebnis des „neuen“ Operators hängt vom Rückgabewert der aufgerufenen Funktion ab:

  • Primitive Rückgabe Wert: Wenn die Funktion einen primitiven Wert zurückgibt (z. B. Zahl, Zeichenfolge), wird das intern erstellte Objekt zurückgegeben.
  • Objektrückgabewert: Wenn die Funktion ein Objekt zurückgibt, Das interne Objekt wird verworfen und das zurückgegebene Objekt hat Vorrang.

Eine alternative Implementierung

Um das Innenleben des „neuen“ Operators zu verstehen, lassen Sie uns Folgendes tun Erkunden Sie eine alternative Implementierung, die ihr Verhalten nachahmt:

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

  proto = Object(f.prototype) === f.prototype ? f.prototype : Object.prototype;
  obj = Object.create(proto);
  ret = f.apply(obj, Array.prototype.slice.call(arguments, 1));

  if (Object(ret) === ret) {
    return ret;
  }
  return obj;
}</code>

Beispielverwendung:

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

Foo.prototype.inherited = 'baz';

var obj = NEW(Foo, 'bar');

console.log(obj.prop);          // 'bar'
console.log(obj.inherited);     // 'baz'
console.log(obj instanceof Foo); // true</code>

Schlussfolgerung

Durch Mit dieser alternativen Implementierung haben wir ein umfassendes Verständnis der entscheidenden Rolle des „neuen“ Operators bei der Objekterstellung und dem Aufbau der Prototypenkette gewonnen. Wenn der komplizierte Mechanismus verstanden wird, können Entwickler die Leistungsfähigkeit der objektorientierten Programmierfunktionen von JavaScript nutzen.

Das obige ist der detaillierte Inhalt vonWie funktioniert der „new“-Operator in JavaScript intern und was sind die wichtigsten Schritte bei der Objekterstellung mit diesem Operator?. 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