Podstawowa różnica między fn () a nową fn () w javascript


12

W jakim aspekcie wywoływanie funkcji z nowym słowem kluczowym i bez niego różni się w javascript? Mam na myśli, czym różnią się wszystkie rzeczy?

testFn() vs new testFn()

Odpowiedzi:


13

newtworzy nowy (pusty) obiekt i ustawia się thisna nim, a następnie wywołuje funkcję, która działa jako konstruktor obiektu (manipulując this. czymś ). Wywołanie tej samej funkcji bez newsłowa kluczowego pozwoliłoby działać na cokolwiek, co thisobecnie oznacza.


Czy jest w tym coś więcej?
akp

@akp nie, to naprawdę takie proste. Z wyjątkiem tego, o czym nie wspomniano, że jeśli funkcja wyraźnie zwraca typ odwołania, jest on zwracany przez newi tworzony obiekt jest marnowany.
Esailija,

2
Użycie newspowoduje, że prototyp nowego obiektu będzie ustawiony tak, aby odwoływał się do pierwszej funkcji, do której przekazywany jest nowy obiekt. Nie sądzę, że takie zachowanie można osiągnąć w inny sposób.
supercat

Masz rację, tęskniłem za tym.
user281377,

1

Te warianty różnią się składniowo: w wariancie „nowym” zakłada się, że funkcja jest konstruktorem. Wariant bez „nowych” przypuszcza, że to nie konstruktorem.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.