Perbedaan mendasar antara fn () dan fn () baru dalam javascript


12

Dalam semua aspek apa, memanggil fungsi dengan dan tanpa kata kunci baru berbeda dalam javascript? Maksud saya apa semua hal berbeda di antara?

testFn() vs. new testFn()

Jawaban:


13

newmembuat objek (kosong) baru dan mengaturnya this, lalu memanggil fungsi, yang bertindak sebagai konstruktor untuk objek (dengan memanipulasi this. sesuatu ). Memanggil fungsi yang sama tanpa newkata kunci akan membiarkannya bertindak apa pun yang thissaat ini berarti.


Apakah ada yang lebih dari ini?
akp

@pak tidak, ini benar-benar sesederhana itu. Kecuali apa yang tidak disebutkan adalah bahwa jika fungsi secara eksplisit mengembalikan tipe referensi, yang dikembalikan oleh newdan objek yang dibuat terbuang sia-sia.
Esailija

2
Penggunaan newakan menyebabkan prototipe objek baru diatur ke referensi fungsi pertama yang dilewati objek baru. Saya tidak berpikir bahwa perilaku dapat dicapai secara sah melalui cara lain.
supercat

Anda benar, saya melewatkan itu.
user281377

1

Varian ini berbeda secara sintaksis: dengan varian "baru" mengandaikan bahwa fungsinya adalah konstruktor. Varian tanpa "baru" mengandaikan, bahwa itu bukan konstruktor.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.