Rumah >hujung hadapan web >tutorial js >Bagaimanakah Corak Invokasi Mempengaruhi Kata Kunci `ini` dalam JavaScript?

Bagaimanakah Corak Invokasi Mempengaruhi Kata Kunci `ini` dalam JavaScript?

Linda Hamilton
Linda Hamiltonasal
2024-12-10 01:35:10725semak imbas

How Does the Invocation Pattern Affect the `this` Keyword in JavaScript?

Bagaimana Corak Invokasi Mempengaruhi Kata Kunci "ini" dalam JavaScript

Apabila bekerja dengan JavaScript, anda mungkin menghadapi tingkah laku luar biasa yang berkaitan dengan "ini" " kata kunci dalam definisi fungsi. Artikel ini menyelidiki selok-belok cara corak seruan mempengaruhi nilai "ini" dan memberikan pemahaman menyeluruh tentang tingkah lakunya.

Sebelum menyelidiki lebih lanjut, adalah penting untuk menjelaskan bahawa JavaScript tidak mempunyai kelas seperti tradisional bahasa berorientasikan objek. Sebaliknya, ia bergantung pada objek dan fungsi, dengan kelas menjadi gula sintaksis. Pemahaman ini membentuk asas untuk mentafsir tingkah laku "ini".

Corak Invokasi dan "ini"

Nilai "ini" bergantung pada cara fungsi dipanggil, yang disebut sebagai pola seruan. Terdapat empat corak utama:

1. Sebagai Kaedah:

Apabila fungsi dipanggil sebagai kaedah objek, "ini" terikat pada objek itu sendiri.

Contoh:

// foo is the object
foo.bar = function() { alert(this); };
// "this" is bound to the foo object
foo.bar();

2. Sebagai Fungsi:

Jika digunakan sebagai fungsi yang berdiri sendiri, "ini" terikat pada objek global, biasanya objek "tetingkap" dalam penyemak imbas.

Contoh:

// Global function
var baz = function() { alert(this); };
// "this" is bound to the window object
baz();

3. Sebagai Pembina:

Dipanggil menggunakan kata kunci "baharu", "ini" terikat pada objek yang baru dibuat. Ini meniru tingkah laku seperti kelas.

Contoh:

// Constructor function
function MyClass() { this.property = 'value'; }
// "this" is bound to the new instance
var instance = new MyClass();

4. Menggunakan Kaedah Guna:

Kaedah fungsi "gunakan" membolehkan anda mentakrifkan nilai "ini" secara eksplisit bersama-sama dengan argumen.

Contoh:

var args = [1, 2];
var obj = { prop: 'value' };
// "this" is bound to the obj object, and args is passed as the arguments
fun.apply(obj, args);

Gelagat Tidak Dijangka Pertimbangan:

Jika fungsi dalaman yang digunakan sebagai panggil balik digunakan dengan corak yang berbeza daripada definisinya, ketidakkonsistenan dalam tingkah laku "ini" boleh timbul. Ini sering ditemui apabila mentakrifkan kaedah menggunakan tatatanda objek-harfiah, di mana fungsi dalaman memanggil panggilan balik sebagai fungsi, mengakibatkan "ini" mengikat objek global dan bukannya objek yang dimaksudkan.

Untuk menangani isu ini, Corak "var that = this" digunakan secara meluas. Dengan menyimpan rujukan kepada "ini" dalam penutupan, seruan fungsi dalaman berikutnya masih boleh mengakses nilai "ini" yang dimaksudkan.

Atas ialah kandungan terperinci Bagaimanakah Corak Invokasi Mempengaruhi Kata Kunci `ini` dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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