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: 'Alicia' };

greet.call(person); // Բարեւ, Alicia!
greet.apply(person); // Բարեւ, Alicia!

const boundGreet = greet.bind(person);
boundGreet(); // Բարեւ, Alicia!

Սլաքային ֆունկցիաներում (Arrow Functions) this-ը չունի սեփական կոնտեքստ։ Այն լեքսիկապես ժառանգվում է այն տարածքից, որտեղ սահմանվել է։

const obj2 = {
  name: 'Bob',
  greet: function() {
    const arrowGreet = () => {
      console.log(`Բարեւ, ${this.name}!`); // this հղվում է obj2-ին
    };
    arrowGreet();
  }
};
obj2.greet(); // Բարեւ, Bob!

const obj3 = {
  name: 'Charlie',
  greet: () => {
    console.log(`Բարեւ, ${this.name}!`); // this հղվում է window-ին (կամ `undefined` խիստ ռեժիմում), ոչ obj3-ին
  }
};
obj3.greet(); // Բարեւ, `undefined`!

Կոնտեքստը this-ի կարող է լինել ոչ ակնհայտ, հատկապես callback-ների փոխանցման կամ ասինխրոն գործողությունների ժամանակ։ Հասկանալ this-ի կանոնները կարևոր է JavaScript-ի ճիշտ աշխատանքի համար։