Verwendung von neuenDie Funktion von new besteht darin, ein Instanzobjekt über einen Konstruktor zu erstellen. Die Beziehung zwischen der Instanz, dem Prototyp und dem Konstruktor ist in der folgenden Abbildung dargestellt: Fassen wir zunächst zusammen
Detaillierte BeschreibungBei der Ausführung der neuen Operation werden folgende Schritte nacheinander ausgeführt: 1. Erstellen Sie ein leeres Objekt
let obj = {} 2. Die interne Eigenschaft __proto__ des leeren Objekts wird der prototype-Eigenschaft des Konstruktors zugewiesen
Funktion Foo(Zahl) { diese.Nummer = Nummer } obj.__proto__ = Foo.prototyp 3. Zeigen Sie mit this des Konstruktors auf ein leeres Objekt
Foo.call(Objekt, 1) 4. Führen Sie den Code im Konstruktor aus
5. Geben Sie das neue Objekt zurück
Emulieren des neuen OperatorsDie folgende myNew-Funktion simuliert das Verhalten des neuen Operators: Funktion meinNeu(func, ...args) { let obj = {} obj.__proto__ = Funktion.Prototyp let res = func.apply(obj, args) Gibt eine res-Instanz des Objekts zurück? res: obj } Funktion Foo(Zahl) { diese.Nummer = Nummer } lass foo1 = meinNeues(Foo, 1) console.log(foo1 Instanz von Foo) // wahr konsole.log(foo1.Nummer) // 1 lass foo2 = neues Foo(2) console.log(foo2 Instanz von Foo) // wahr console.log(foo2.Nummer) // 2 Der Operator instanceof wird oben verwendet, um zu bestimmen, ob der Rückgabewert des Konstruktors eine Instanz von Object ist, dh ob es sich um einen Referenztypwert handelt. Dies liegt daran, dass alle Referenztypwerte Instanzen von Object sind und Object der Basistyp aller Referenztypwerte ist. Damit ist dieser Artikel über das Prinzip des neuen Operators in JavaScript zu Ende. Weitere relevante Inhalte zum Prinzip des neuen Operators in JS finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
<<: Erstellen Sie eine virtuelle Umgebung mit venv in Python3 in Ubuntu
>>: Schritte zum Installieren von Superset unter dem Win10-System
Heutige Aufgaben 1. Wahl der Linux-Distribution 2...
Es ist großartig, CSS zu verwenden, um verschiede...
Fehlerszenario Beim Aufrufen von JDBC zum Einfüge...
Vorwort Ich glaube, dass jeder beim Erlernen von ...
Ergebnisse erzielen Implementierungscode html <...
Gestern habe ich jemandem bei der Installation ei...
Beim Erstellen von Webseiten tritt häufig das Pro...
Inhaltsverzeichnis 1. Datenbankbeschränkungen 1.1...
Inhaltsverzeichnis Grundlegende allgemeine MySQL-...
1. Docker zieht das Image Docker Pull MySQL (stan...
1. Erstellen Sie ein Konfigurationsdateiverzeichn...
Vor ein paar Tagen habe ich auf Codepen ein Beisp...
Im vorherigen Artikel haben wir vorgestellt, wie ...
Laden Sie die komprimierte Version von MySQL-5.7....
Dieser Artikel beschreibt die MySQL-Datentypen un...