Ի՞նչ է 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-ի ճիշտ աշխատանքի համար։