Պարամետրի միջոցով կոնտեքստը JavaScript-ում
Գոյություն ունի խնդրի լուծման մեկ այլ եղանակ: Եկեք անենք այնպես,
որ child ֆունկցիան ընդունի
պարամետր.
function child(param) {
// այստեղ կլինի կոդը
}
Իսկ այս ֆունկցիան կանչելիս
նրա մեջ կփոխանցենք
this-ը.
function parent() {
child(this); // փոխանցում ենք this-ը որպես պարամետր
function child(param) {
// param փոփոխականում գտնվում է փոխանցված this-ի պարունակությունը
}
}
Քանի որ child-ի կանչը կատարվում է
ծնող ֆունկցիայի ներսում, ապա փոխանցվող
this-ը ցույց է տալիս այն, ինչ պետք է: Ապա
այս this-ը ընկնում է param պարամետրի մեջ
և այդ տեսքով էլ հասանելի կլինի ֆունկցիայի ներսում:
Ահա վերջնական կոդը.
let elem = document.querySelector('#elem');
elem.addEventListener('blur', parent);
function parent() {
child(this); // փոխանցում ենք this-ը որպես պարամետր
function child(param) {
console.log(param.value); // արտածում ենք ինփուտի value-ն
}
}
Վերցրեք նախորդ առաջադրանքի կոդը և ուղղեք կոդի խնդիրը՝ օգտագործելով սովորած երկրորդ եղանակը: