Sobes.tech
Junior

რა არის this JavaScript-ში?

sobes.tech AI

პასუხი AI-სგან

JavaScriptте this — бул функциянын аткаруу контекстин көрсөтүүчү ачкыч сөз. Анын мааниси функцияны чакыруу ыкмасына жараша аныкталат.

Көп учурда this жөнөкөй чакырууда браузердеги жалпы объектке (баракчада window) көрсөтөт, эгер катуу режимде эмес болсо.

Катуу режимде ('use strict') ошол эле сценарийде this undefined болот.

Объекттин методу катары чакырганда this ошол объектке шилтеме кылат.

const obj = {
  method: function() {
    console.log(this); // obj
  }
};
obj.method();

Конструкторду чакырганда (new менен функцияны), this жаңы түзүлгөн объекттин экземплярун көрсөтөт.

function Constructor() {
  console.log(this); // Constructorдун экземпляри
}
const instance = new Constructor();

call, apply, bind методдорун колдонууда this биринчи аргумент катары так белгиленет.

function greet() {
  console.log(`Салам, ${this.name}!`);
}

const person = { name: 'Алиса' };

greet.call(person); // Салам, Алиса!
greet.apply(person); // Салам, Алиса!

const boundGreet = greet.bind(person);
boundGreet(); // Салам, Алиса!

Тиркелүү функцияларында this өзүнүн контекстине ээ эмес. Ал лексикалык түрдө аныкталган жерден мурас катары алат, ал тиркелүү функция аныкталган жер.

const obj2 = {
  name: 'Боб',
  greet: function() {
    const arrowGreet = () => {
      console.log(`Салам, ${this.name}!`); // this `obj2`ке шилтеме кылат
    };
    arrowGreet();
  }
};
obj2.greet(); // Салам, Боб!

const obj3 = {
  name: 'Чарли',
  greet: () => {
    console.log(`Салам, ${this.name}!`); // this `window`ка (же `undefined` катуу режимде), `obj3` эмес
  }
};
obj3.greet(); // Салам, `undefined`! (же каталар)

this контексти көбүнчө түшүнүксүз болушу мүмкүн, өзгөчө колбэктерди жана асинхрондук операцияларды өткөрүүдө. this аныкталышын түшүнүү JavaScriptтин туура иштеши үчүн маанилүү.