Պարամետրի միջոցով կոնտեքստը JavaScript-ում

Գոյություն ունի խնդրի լուծման մեկ այլ եղանակ: Եկեք անենք այնպես, որ child ֆունկցիան ընդունի պարամետր.

javascriptfunction child(param) {
  // այստեղ կլինի կոդը
}

Իսկ այս ֆունկցիան կանչելիս նրա մեջ կփոխանցենք this-ը.

javascriptfunction parent() {
  child(this); // փոխանցում ենք this-ը որպես պարամետր
  
  function child(param) {
    // param փոփոխականում գտնվում է փոխանցված this-ի պարունակությունը
  }
}

Քանի որ child-ի կանչը կատարվում է ծնող ֆունկցիայի ներսում, ապա փոխանցվող this-ը ցույց է տալիս այն, ինչ պետք է: Ապա այս this-ը ընկնում է param պարամետրի մեջ և այդ տեսքով էլ հասանելի կլինի ֆունկցիայի ներսում:

Ահա վերջնական կոդը.

javascriptlet elem = document.querySelector('#elem');
elem.addEventListener('blur', parent);

function parent() {
  child(this); // փոխանցում ենք this-ը որպես պարամետր
  
  function child(param) {
    console.log(param.value); // արտածում ենք ինփուտի value-ն
  }
}
Задание 1

Վերցրեք նախորդ առաջադրանքի կոդը և ուղղեք կոդի խնդիրը՝ օգտագործելով սովորած երկրորդ եղանակը: