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 же 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 маанисине ээ, чакыруу ыкмасына жараша.