Javascript fn () ve new fn () arasındaki temel fark


12

Hangi açıdan bakıldığında, javascript'te yeni anahtar kelimeli veya anahtarsız bir işlevi çağırmak farklıdır? Yani her şeyin birbirinden farkı nedir?

testFn() vs new testFn()

Yanıtlar:


13

newYeni (boş) nesne ve setler oluşturur thisbuna, daha sonra nesne için kurucusu olarak işlem görür işlevini çağırır (manipüle ederek this. şey ). Aynı işlevi newanahtar kelime olmadan çağırmak, thisşu anda ne anlama geldiğini etkiler.


Bundan daha fazlası var mı?
akp

@akp hayır gerçekten bu kadar basit. Bahsedilmeyen hariç, işlev açıkça bir başvuru türü döndürürse, bu tarafından döndürülür newve yaratılan nesne israf edilir.
Esailija

2
Kullanmak new, yeni nesnenin prototipinin, yeni nesnenin geçirildiği ilk işleve başvurmak üzere ayarlanmasına neden olur. Davranışın başka yollarla meşru bir şekilde elde edilebileceğini düşünmüyorum.
supercat

Haklısın, bunu özledim.
user281377

1

Bu varyantlar sözdizimsel olarak farklıdır: "new" varyantı, işlevin bir kurucu olduğunu varsayar. "Yeni" olmayan varyant, bunun bir kurucu olmadığını varsayar .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.