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табдил меёбад. - Дар режими ғайри қатъӣ — ба объекти глобалӣ (
windowдар браузерҳо).
- Дар режими қатъӣ (
function foo() {
console.log(this);
}
foo(); // window ё 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 дар асоси усули даъват мебошанд.