ცვლადის მეშვეობით კონტექსტი JavaScript-ში
გადაწყვეტა ასეთია: გარე ფუნქციაში ჩავწერთ
this ნებისმიერ ცვლადში და ეს ცვლადი
იქნება ხელმისაწვდომი შიდა ფუნქციაში, როგორც
ყველა სხვა ცვლადი (ჩვეულებრივ ამ ცვლადს სახელად
self უწოდებენ). ამ გზით ჩვენ გადავიტანთ
this გარე ფუნქციიდან შიდაში:
"use strict";
let elem = document.querySelector('#elem');
elem.addEventListener('blur', parent);
function parent() {
console.log(this.value); // გამოიტანს 'text'
let self = this; // ჩავწეროთ this ნებისმიერ ცვლადში, მაგალითად, self-ში
function child() {
console.log(self.value); // გამოიტანს 'text'
}
child();
}
მოცემულია ასეთი კოდი:
<input id="elem" value="3">
"use strict";
let elem = document.querySelector('#elem');
elem.addEventListener('blur', func);
function func() {
alert( square() );
function square() {
return this.value * this.value;
}
}
კოდის ავტორს სურდა, რომ ფოკუსის დაკარგვისას
ეკრანზე გამოეტანა value-დან აღებული
რიცხვის კვადრატი. თუმცა, რატომღაც ფოკუსის დაკარგვისას
კონსოლში შეცდომა გამოიტანება. გამასწორეთ ავტორის
შეცდომა. დაწერეთ ტექსტი, რომელშიც თქვენ
აუხსნით ავტორს კოდის, რატომ წარმოიშვა
მისი შეცდომა.