Differenza fondamentale tra fn () e new fn () in javascript


12

In quali aspetti, chiamare una funzione con e senza una nuova parola chiave differisce in javascript? Intendo cosa differiscono tra tutte le cose?

testFn() vs new testFn()

Risposte:


13

newcrea un nuovo oggetto (vuoto) e lo imposta this, quindi chiama la funzione, che funge da costruttore per l'oggetto (manipolando this. qualcosa ). Chiamare la stessa funzione senza la newparola chiave consentirebbe di agire su qualunque cosa thissignifichi attualmente.


C'è altro in questo?
Akp

@akp no, è davvero così semplice. Tranne ciò che non è stato menzionato è che se la funzione restituisce esplicitamente un tipo di riferimento, questo viene restituito newe l'oggetto creato viene sprecato.
Esailija,

2
L'uso newfarà sì che il prototipo del nuovo oggetto venga impostato in modo da fare riferimento a quello della prima funzione a cui viene passato il nuovo oggetto. Non penso che il comportamento possa essere legittimamente raggiunto con altri mezzi.
supercat,

Hai ragione, mi è mancato.
user281377

1

Queste varianti sono sintatticamente diverse: con la variante "nuova" si suppone che la funzione sia un costruttore. La variante senza "nuovi" suppone, che è non è un costruttore.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.