Rumah > hujung hadapan web > tutorial js > Mengapa Penunjuk \'ini\' Menuding ke Objek Global dalam Fungsi JavaScript Bersarang?

Mengapa Penunjuk \'ini\' Menuding ke Objek Global dalam Fungsi JavaScript Bersarang?

Susan Sarandon
Lepaskan: 2024-10-19 06:48:30
asal
648 orang telah melayarinya

Why Does the

Misteri Penunjuk "ini" JavaScript dalam Fungsi Bersarang

Dalam coretan kod JavaScript, anda telah menemui tingkah laku yang tidak dijangka mengenai "ini " penunjuk dalam fungsi bersarang. Walaupun mentakrifkan fungsi bersarang dalam kaedah objek, penunjuk "ini" di dalam fungsi bersarang menghala ke objek "tetingkap" global.

Kelakuan penuding "ini" ditentukan oleh kaedah seruan fungsi dalam JavaScript. Terdapat tiga kaedah utama:

  1. Invokasi Langsung: someThing.someFunction(arg1, arg2, argN)

    • Dalam kaedah ini, penunjuk "ini" merujuk kepada objek yang menggunakan fungsi, dalam kes ini, someThing.
  2. Function Call with call(): someFunction.call(someThing, arg1, arg2, argN)

    • Fungsi call() secara eksplisit menetapkan penunjuk "ini" kepada objek yang disediakan, dalam kes ini, someThing.
  3. Fungsi Panggilan dengan apply() : someFunction.apply(someThing, [arg1, arg2, argN])

    • Serupa dengan call(), fungsi apply() menetapkan penunjuk "ini" kepada objek yang disediakan, tetapi ia memerlukan tatasusunan argumen sebaliknya.

Dalam contoh yang anda berikan, fungsi bersarang digunakan tanpa sebarang kaedah penyeruan fungsi eksplisit. Akibatnya, penunjuk "ini" menjadi lalai kepada objek global, yang biasanya merupakan objek "tetingkap" dalam persekitaran penyemak imbas.

Untuk menentukan gelagat penunjuk "ini" secara eksplisit, anda boleh menggunakan pengubahsuaian berikut :

  1. Gunakan std_obj.displayMe() dan bukannya std_obj.displayMe; untuk memanggil kaedah displayMe secara eksplisit.
  2. Tentukan fungsi bersarang dengan penunjuk ini objek secara eksplisit: var doSomeEffects = function() { var that = this; ... }
  3. Gunakan fungsi call() atau apply() untuk menetapkan penunjuk "ini": doSomeEffects.call(std_obj);

Dengan menggunakan mana-mana kaedah ini , anda boleh mengawal kelakuan penunjuk "ini" dalam fungsi bersarang dan memastikan ia merujuk kepada objek yang diingini.

Atas ialah kandungan terperinci Mengapa Penunjuk \'ini\' Menuding ke Objek Global dalam Fungsi JavaScript Bersarang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan