Sobes.tech
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 дар асоси усули даъват мебошанд.