Sobes.tech
Middle

Ինչու չի կարելի օգտագործել 'this' բանալի բառը JavaScript-ում?

sobes.tech AI

Պատասխան AI-ից

Այս this-ը չի կարող օգտագործվել սլաքային ֆունկցիաներում՝ սեփական կոնտեքստին կապելու համար: Սլաքային ֆունկցիաները չեն ստեղծում իրենց սեփական this, այլ ժառանգում են այն այն շրջապատից, որտեղ սահմանվել են:

Նույնպես, this-ը անպատասխանատու է որպես հետադարձ կանչեր ասինխրոն գործողությունների կամ իրադարձության մշակողների մեջ առանց հստակ կոնտեքստի կապի (.bind(), .call(), .apply()), քանի որ նրա արժեքը կարող է փոխվել կամ դառնալ գլոբալ օբյեկտ (չափավոր ռեժիմում) կամ undefined (խիստ ռեժիմում):

Օրինակ՝

function ավանդականՖունկցիա() {
  console.log(this); // this կախված է կանչից
}

const սլաքայինՖունկցիա = () => {
  console.log(this); // this ժառանգվում է արտաքին շրջապատից
};

const օբյեկտ = {
  մեթոդ: ավանդականՖունկցիա
};

օբյեկտ.մեթոդ(); // this - օբյեկտ
ավանդականՖունկցիա(); // this - գլոբալ օբյեկտ (window / global)

const օբյեկտ2 = {
  մեթոդ: սլաքայինՖունկցիա
};

օբյեկտ2.մեթոդ(); // this - ժառանգված։ Եթե սահմանված է գլոբալ տարածքում, ապա global/window