Konteksts caur mainīgo JavaScript
Risinājums ir šāds: ārējā funkcijā ierakstīsim
this jebkurā mainīgajā un šis mainīgais
būs pieejams iekšējā funkcijā, tāpat
kā visi mainīgie (parasti šo mainīgo sauc par
self). Tādējādi mēs nodosim
this no ārējās funkcijas uz iekšējo:
"use strict";
let elem = document.querySelector('#elem');
elem.addEventListener('blur', parent);
function parent() {
console.log(this.value); // izvadīs 'text'
let self = this; // ierakstīsim this jebkurā mainīgajā, piemēram, self
function child() {
console.log(self.value); // izvadīs 'text'
}
child();
}
Ir dots šāds kods:
<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;
}
}
Koda autors gribēja, ka zaudējot fokusu
ekrānā tiktu parādīts skaitlis no value
inputa kvadrāts. Tomēr kādu iemeslu dēļ, zaudējot fokusu,
konsolē tiek parādīta kļūda. Izlabojiet koda autora
kļūdu. Uzrakstiet tekstu, kurā jūs
paskaidrosiet koda autoram, kāpēc radās
viņa kļūda.