Anonüümsete funktsioonide sidumise lahtiharutamine JavaScriptis
Oletame nüüd, et meie lõikudele on seotud anonüümne funktsioon:
let elems = document.querySelectorAll('p');
for (let elem of elems) {
elem.addEventListener('click', function() {
console.log(this.textContent);
});
}
Oletame, et soovime lahti harutada selle funktsiooni lõigust pärast sellele lõigule klõpsamist. Siiski ootab meid probleem: funktsioonil pole nime, mis tähendab, et me ei saa sellele nime järgi pöörduda, et seda lahti harutada.
Probleemi lahendamiseks tuleb funktsioonile nimi anda, muutes selle nimetatud funktsionaalavaldiseks. Teeme selle:
let elems = document.querySelectorAll('p');
for (let elem of elems) {
elem.addEventListener('click', function func() { // andsime funktsioonile nime
console.log(this.textContent);
});
}
Nüüd saab selle funktsiooni enda sees lahti harutada:
let elems = document.querySelectorAll('p');
for (let elem of elems) {
elem.addEventListener('click', function func() {
console.log(this.textContent);
this.removeEventListener('click', func); // harutame funktsiooni lahti
});
}
Antud on loetelu ul, mille iga punktis on
kirjas number. Tehke nii, et
klõpsates mis tahes li peale, suurendataks selle numbrit
ühe võrra.
Muutke eelmist ülesannet nii,
et iga li suurendaks oma
väärtust ainult esimesel vajutusel
endale.
Muutke eelmist ülesannet nii,
et iga li suurendaks oma
väärtust ainult siis, kui selle väärtus
on väiksem kui 10.