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:
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!