Կոնտեքստի կորուստ մեթոդի կոդում OOP-ում JavaScript-ում
Դասի մեթոդի սկզբնական կոդն օգտագործելիս կոնտեքստը կարող է կորչել։ Եկեք նայենք օրինակով։ Ենթադրենք ունենք հետևյալ դասը՝
class User {
#name;
constructor(name) {
this.#name = name;
}
getName() {
return this.#name;
}
}
Ստեղծենք այս դասի օբյեկտը.
let user = new User('john');
Գրենք մեթոդի կոդը փոփոխականի մեջ.
let func = user.getName;
Մեթոդը փոփոխականի մեջ գրելու պահին
կոնտեքստն է կորել։ Այժմ this-ը
մեթոդի կոդի ներսում չի ցույց տա
դասի օբյեկտը։ Եկեք ստուգենք, կանչենք
մեր ֆունկցիան.
console.log(func()); // սխալ
Խնդիրը լուծելու համար կարելի է կապել
կոնտեքստը ֆունկցիայի հետ, օրինակ,
bind-ի միջոցով.
func = func.bind(user);
console.log(func()); // աշխատում է