Kas ir this JavaScript?
sobes.tech AI
Atbilde no AI
Šajā JavaScript this ir atslēgas vārds, kas norāda uz funkcijas izpildes kontekstu. Tā vērtība ir atkarīga no funkcijas izsaukšanas veida.
Parasti this norāda uz globālo objektu (pārlūkprogrammā window) vienkārša izsaukuma gadījumā, ja nav aktīvs 'use strict' režīms.
Strict režīmā ('use strict') tajā pašā scenārijā this būs undefined.
Izsaucot objekta metodi, this norāda uz pašu objektu.
const obj = {
method: function() {
console.log(this); // obj
}
};
obj.method();
Izsaucot konstruktoru (new ar funkciju), this norāda uz jauno izveidoto objekta instanci.
function Constructor() {
console.log(this); // Konstruktoru instancē
}
const instance = new Constructor();
Izmantojot call, apply, bind metodes, this skaidri tiek iestatīts kā pirmais arguments.
function greet() {
console.log(`Sveiki, ${this.name}!`);
}
const person = { name: 'Alisa' };
greet.call(person); // Sveiki, Alisa!
greet.apply(person); // Sveiki, Alisa!
const boundGreet = greet.bind(person);
boundGreet(); // Sveiki, Alisa!
Arrow funkcijās this nav sava konteksta. Tas lieto leksisko kontekstu no vietas, kurā arrow funkcija tika definēta.
const obj2 = {
name: 'Bobs',
greet: function() {
const arrowGreet = () => {
console.log(`Sveiki, ${this.name}!`); // `this` norāda uz `obj2`
};
arrowGreet();
}
};
obj2.greet(); // Sveiki, Bobs!
const obj3 = {
name: 'Čārlijs',
greet: () => {
console.log(`Sveiki, ${this.name}!`); // `this` norāda uz logu (`window`) vai `undefined` režīmā, ne uz `obj3`
}
};
obj3.greet(); // Sveiki, `undefined`!
Konteksts this var būt neskaidrs, īpaši, pārsūtot atpakaļklausītājus vai asinhroniskās operācijas. Tā pareiza izpratne ir būtiska JavaScript pareizai darbībai.