Objek ini sentiasa menjadi perangkap dalam js. Sukar untuk menilai perkara yang ditunjukkannya, dan kami sering melakukan kesilapan jenis ini disebabkan pengalaman kami dengan diri daripada C atau python. Seterusnya, mari bercakap tentang pemilikan objek ini secara terperinci.
peraturan1: ini
persekitaran globalPersekitaran JavaScript secara semula jadi ditentukan oleh fungsi Dalam JS, konteks tidak boleh dipisahkan oleh blok kod Persekitaran yang tidak dibalut oleh fungsi ialah persekitaran global Lihat contoh berikut
peraturan2: ini apabila dipanggil sebagai kaedah
Jelas sekali, keadaan ini mudah dinilai. Ia konsisten dengan diri dalam ular sawa Ini sudah pasti menunjuk kepada objek yang memanggil kaedah
peraturan3: ini apabila digunakan sebagai pembina
Tidak perlu dikatakan, ini pada masa ini jelas menunjukkan kepada objek yang baru dibuat Larian pembina sebenarnya tidak mencipta objek, tetapi hanya memulakan objek itu sebelum dijalankan
Berikut ialah beberapa contoh
peraturan4: ini dalam panggilan tidak langsung
Panggilan tidak langsung yang dipanggil merujuk kepada menggunakan fungsi guna dan panggilan ke panggilan Pada masa ini, ini menunjukkan parameter pertama dalam senarai parameternya.
peraturan5: ini dalam situasi lain
Ingat bahawa ini tidak akan diubah dalam kes lain, di sinilah kemungkinan besar kesilapan berlaku.
Kita harus ingat bahawa ini dalam fungsi bersarang tidak akan menunjuk ke fungsi di mana ia bersarang Dalam contoh ini, ini dalam sayhello tidak akan menunjuk ke fungsi yang sepadan dengan hello. Jika kita ubah sedikit contoh menjadi
Pada masa ini, masalah datang Apabila menjalankan contoh awal menggunakan nod, ia akan memaparkan undefined says hello world Saya tertanya-tanya jika sesiapa boleh menerangkannya.
peraturan6:eval melanggar semua peraturan
Akhir sekali diakhiri dengan contoh
Adakah anda faham?