Heim >Web-Frontend >js-Tutorial >Wie erstellt der „new'-Operator in JavaScript Objekte und stellt deren Vererbung her?

Wie erstellt der „new'-Operator in JavaScript Objekte und stellt deren Vererbung her?

Linda Hamilton
Linda HamiltonOriginal
2024-10-27 01:46:30731Durchsuche

How Does the `new` Operator in JavaScript Create Objects and Establish Their Inheritance?

Entmystifizierung des Innenlebens des neuen Operators in JavaScript

Das missverstandene Terrain von JavaScript, ähnlich der Prototypenkette, enthüllt eine grundlegende Abfrage : Wie orchestriert der „neue“ Operator die Objekterstellung und definiert deren Abstammung und Kernattribute?

Die Essenz von Neu

Um dieses Rätsel zu lösen, betrachten Sie eine alternative Illustration :

function NEW(f) {
  var obj, ret, proto;

  // Examine `f.prototype`
  proto = Object(f.prototype) === f.prototype ? f.prototype : Object.prototype;

  // Inherit from `proto`
  obj = Object.create(proto);

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

  // Determine return type
  if (Object(ret) === ret) { // Object returned?
    return ret;
  }

  // Otherwise, return inherited object
  return obj;
}

Den Mechanismus verstehen

Der neue Operator basiert auf dem internen [[Konstrukt]]-Mechanismus, der:

  1. Erstellt ein natives Objekt.
  2. Setzt seinen [[Prototyp]] auf den Prototyp der Funktion oder Object.prototype (wenn der Prototyp primitiv ist).
  3. Ruft die Funktion mit dem Objekt als „this“ auf. "
  4. Gibt das intern erstellte Objekt zurück, wenn die Funktion ein Grundelement zurückgibt, oder das von der Funktion zurückgegebene Objekt, wenn sie ein Objekt zurückgibt.

Praktische Anwendung

Veranschaulichung der Leistungsfähigkeit dieses Konzepts:

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

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

Dadurch wird ein von Foo erbendes Objekt mit der geerbten Eigenschaft „inherited“ und der Eigenschaft „prop“ mit dem Wert „bar“ erstellt.

Das obige ist der detaillierte Inhalt vonWie erstellt der „new'-Operator in JavaScript Objekte und stellt deren Vererbung her?. 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