Konteks Fungsi Tidak Terikat dalam JavaScript
Mari kita lihat apa yang akan berlaku jika dalam fungsi
kita nyatakan this, tetapi tidak mengikatnya
kepada mana-mana elemen, seperti ini:
function func() {
console.log(this);
}
func();
Dalam kes ini, hasilnya bergantung pada sama ada
mod ketat
digunakan atau tidak. Jika mod tidak ketat,
maka this akan menyimpan rujukan kepada
window:
function func() {
console.log(this); // rujukan kepada objek window
}
func();
Dan jika mod adalah ketat, maka this akan
menyimpan undefined:
"use strict";
function func() {
console.log(this); // undefined
}
func();
Dari apa yang dinyatakan di atas, mungkin kelihatan bahawa
dalam mod ketat this akan sentiasa
undefined. Tapi jangan terpedaya! Jika kita hanya
memaparkan this di luar fungsi, maka ia akan
merujuk kepada window tanpa mengira
mod:
"use strict";
console.log(this); // dalam this ada rujukan kepada window
Kesimpulan
Dalam mana-mana fungsi, kita boleh menulis this,
ini tidak akan menyebabkan sebarang ralat JavaScript.
Namun, apa sebenarnya yang akan terkandung dalam this ini
tidak ditentukan sehingga saat fungsi dipanggil.
Malah, bagi panggilan fungsi yang berbeza, this
boleh menerima nilai yang berbeza. Semuanya bergantung
pada konteks di mana fungsi tersebut dipanggil.