Middle
Խոսիր այս մասին տարբեր կոնտեքստներում՝ օբյեկտի մեթոդներում, սլաքային ֆունկցիաներում և սովորական ֆունկցիաներում։
sobes.tech AI
Պատասխան AI-ից
JavaScript-ում this արժեքը կախված է ֆունկցիայի կանչման կոնտեքստից:
- Օբյեկտի մեթոդներում
thisհղում է այն օբյեկտին, որի համար է մեթոդը:
const obj = {
name: 'Alice',
greet() {
console.log(this.name);
}
};
obj.greet(); // Alice
- Նորմալ ֆունկցիայում (չէ մեթոդ)
thisկախված է ռեժիմից և կանչման ձևից:- Խիստ ռեժիմում (
'use strict') —thisկլինիundefined:
- Խիստ ռեժիմում (
function foo() {
console.log(this);
}
foo(); // window կամ strict ռեժիմում `undefined`
- Ձկնաձիգ ֆունկցիաներում
thisլեքսիկապես ժառանգվում է արտաքին կոնտեքստից, այսինքն՝ այն տարածքից, որտեղ հայտարարվել է ֆունկցիան, ոչ թե որտեղ է կանչվում:
const obj = {
name: 'Bob',
arrowFunc: () => {
console.log(this.name);
},
regularFunc() {
const arrow = () => {
console.log(this.name);
};
arrow();
}
};
obj.arrowFunc(); // undefined կամ արտաքին կոնտեքստից անուն
obj.regularFunc(); // Bob
Հետևաբար, ձկնաձիգ ֆունկցիաները օգտակար են this կոնտեքստը պահպանելու համար արտաքին ֆունկցիայից, մինչդեռ սովորական ֆունկցիաներն ու մեթոդները ունեն իրենց սեփական this արժեքը կանչման ձևից կախված։