JavaScript-də this nədir?
sobes.tech Süni İntellekt
AI-dan cavab
JavaScript-də this funksiyanın icra kontekstini göstərən açar sözdür. Onun dəyəri funksiya necə çağırılır əsasında müəyyən edilir.
Adətən, this adi funksiya çağırışında brauzerdə window obyektinə işarə edir, əgər sərt rejimdə deyilsə.
Sərt rejimdə ('use strict') isə, eyni ssenaridə this undefined olacaq.
Obyektin metodunu çağırarkən, this həmin obyektə istinad edir.
const obj = {
method: function() {
console.log(this); // obj
}
};
obj.method();
Konstruktoru (new ilə funksiya) çağırarkən, this yeni yaradılmış nümunəyə işarə edir.
function Constructor() {
console.log(this); // Constructor nümunəsi
}
const instance = new Constructor();
call, apply, bind metodlarından istifadə etdikdə, this açıq şəkildə ilk arqument kimi təyin edilir.
function greet() {
console.log(`Salam, ${this.name}!`);
}
const person = { name: 'Alicia' };
greet.call(person); // Salam, Alicia!
greet.apply(person); // Salam, Alicia!
const boundGreet = greet.bind(person);
boundGreet(); // Salam, Alicia!
Arrow funksiyalarda (Arrow Functions) this öz kontekstinə malik deyil. O, lexik olaraq, təyin olunduğu sahədən miras alınır.
const obj2 = {
name: 'Bob',
greet: function() {
const arrowGreet = () => {
console.log(`Salam, ${this.name}!`); // this, obj2-ə istinad edir
};
arrowGreet();
}
};
obj2.greet(); // Salam, Bob!
const obj3 = {
name: 'Charlie',
greet: () => {
console.log(`Salam, ${this.name}!`); // this, window (və ya strict rejimdə undefined), obj3-ə deyil
}
};
obj3.greet(); // Salam, undefined! (və ya xəta)
this konteksti, xüsusən, callback-lər və ya asinxron əməliyyatlar zamanı, qeyri-müəyyən ola bilər. this qaydalarını başa düşmək, JavaScript-in düzgün işləməsi üçün vacibdir.