Kehilangan Konteks dalam Kode Metode di OOP JavaScript
Saat menggunakan kode asli metode kelas, konteks bisa hilang. Mari kita lihat contohnya. Misalkan kita memiliki kelas berikut:
class User {
#name;
constructor(name) {
this.#name = name;
}
getName() {
return this.#name;
}
}
Mari buat objek dari kelas ini:
let user = new User('john');
Mari rekam kode metode ke dalam variabel:
let func = user.getName;
Pada saat merekam metode ke dalam variabel,
konteksnya hilang. Sekarang this
di dalam kode metode tidak akan menunjuk
pada objek kelas. Mari kita periksa, panggil
fungsi kita:
console.log(func()); // error
Untuk menyelesaikan masalah ini, kita dapat mengikat
konteks ke fungsi, misalnya,
melalui bind:
func = func.bind(user);
console.log(func()); // berhasil