Grundlegender Unterschied zwischen fn () und neuem fn () in Javascript


12

In welchen Aspekten unterscheidet sich der Aufruf einer Funktion mit und ohne neues Schlüsselwort in Javascript? Ich meine, was alle Dinge unterscheiden zwischen?

testFn() vs. new testFn()

Antworten:


13

newerstellt ein neues (leeres) Objekt und setzt thisdarauf, ruft dann die Funktion auf, die als Konstruktor für das Objekt fungiert (durch Manipulieren von this. etwas ). Wenn Sie dieselbe Funktion ohne das newSchlüsselwort aufrufen, wird sie auf das angewendet, was thisaktuell bedeutet.


Gibt es noch etwas dazu?
akp

@akp nein es ist wirklich so einfach. Außer, was nicht erwähnt wurde, ist, dass wenn die Funktion explizit einen Referenztyp zurückgibt, dieser von zurückgegeben wird newund das erstellte Objekt verschwendet wird.
Esailija

2
Durch newdie Verwendung wird der Prototyp des neuen Objekts so eingestellt, dass er auf den der ersten Funktion verweist, an die das neue Objekt übergeben wird. Ich denke nicht, dass Verhalten auf andere Weise legitim erreicht werden kann.
Supercat

Du hast recht, das habe ich verpasst.
user281377

1

Diese Varianten unterscheiden sich syntaktisch: Bei "neuer" Variante wird davon ausgegangen, dass die Funktion ein Konstruktor ist. Die Variante ohne "neu" setzt voraus, dass es sich nicht um einen Konstruktor handelt.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.