Mis on this JavaScriptis?
sobes.tech AI
Vastus AI-lt
JavaScriptis on this võtmesõna, mis näitab funktsiooni täitmise konteksti. Selle väärtus sõltub funktsiooni kutsumise viisist.
Tavaliselt viitab this brauseris tavapärasel funktsiooni kutsumisel globaalsele objektile (window), kui ei ole kasutusel strict-režiim.
Strict-režiimis ('use strict') on sama stsenaariumi puhul this undefined.
Kui kutsutakse objekti meetodina, viitab this sellele objekti.
const obj = {
method: function() {
console.log(this); // obj
}
};
obj.method();
Konstruktorit kutsudes (new koos funktsiooniga), viitab this sellele uuele loodud objekti eksemplarile.
function Constructor() {
console.log(this); // Constructori eksemplar
}
const instance = new Constructor();
Kasutades call, apply, bind meetodeid, määratakse this selgelt esimese argumendina.
function greet() {
console.log(`Tere, ${this.name}!`);
}
const person = { name: 'Alice' };
greet.call(person); // Tere, Alice!
greet.apply(person); // Tere, Alice!
const boundGreet = greet.bind(person);
boundGreet(); // Tere, Alice!
Noolefunktsioonides this ei oma oma konteksti. See pärib leksikaalselt selle konteksti, kus noolefunktsioon defineeriti.
const obj2 = {
name: 'Bob',
greet: function() {
const arrowGreet = () => {
console.log(`Tere, ${this.name}!`); // `this` viitab `obj2`
};
arrowGreet();
}
};
obj2.greet(); // Tere, Bob!
const obj3 = {
name: 'Charlie',
greet: () => {
console.log(`Tere, ${this.name}!`); // `this` viitab aknale (`window`) või `undefined` strict-režiimis, mitte `obj3`
}
};
obj3.greet(); // Tere, `undefined`!
Kontekst this võib olla ebaselge, eriti tagasikutsumisel või asünkroonsetes operatsioonides. Selle reeglite mõistmine on JavaScripti korrektse toimimise jaoks kriitiline.