this ditentokake dening carane sawijining fungsi DIPANGGIL, bukan ngendi iku didefinisikake. Ana limang aturan:
js
obj = {
: ,
() { .; },
};
obj.();
f = obj.;
();
f.(obj);
();
this ditentokake dening carane sawijining fungsi DIPANGGIL, bukan ngendi iku didefinisikake. Ana limang aturan:
obj = {
: ,
() { .; },
};
obj.();
f = obj.;
();
f.(obj);
();
Arrow functions ora duwe this piyik — mulane saka scope sing nunutup ing wektu definisi. Iki sebab apa panah sampurna kanggo callbacks:
const obj = {
items: [1, 2],
logAll() {
// ✅ arrow inherits `this` from logAll → `this` is obj
this.items.forEach(i => console.log(this.items, i));
// ❌ a regular function here would have its own `this` (undefined) → crash
// this.items.forEach(function (i) { console.log(this.items); });
},
};
Ngirim sawijining metode minangka callback ilang bindinge, amarga banjur dipanggil kanthi biasa:
button.addEventListener("click", obj.getX); // ❌ `this` is the button
button.addEventListener("click", () => obj.getX()); // ✅ keeps obj
button.addEventListener("click", obj.getX.bind(obj)); // ✅ also fine
Kesalahpahaman babagan this minangka salah sawijining bug JS sing paling umum.
Solusi biasane minangka arrow function utawa .bind() kanggo ngunci this sing dimaksud.
Pustaka pitakon wawancara IT kanthi jawaban rinci — saka Junior nganti Senior.
Nyumbang