Ин чӣ дар JavaScript аст?
sobes.tech AI
Ҷавоб аз AI
this дар JavaScript — калидвое слово, якое паказвае на кантэкст выканання функцыі. Яго значэнне вызначаецца у залежнасці ад таго, як выклікаецца функцыя.
Звычайна, 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.