Čo je this v JavaScript?
sobes.tech AI
Odpoveď od AI
this v JavaScripte je kľúčové slovo, ktoré označuje kontext vykonávania funkcie. Jeho hodnota je určená podľa spôsobu, akým je funkcia volaná.
Zvyčajne this odkazuje na globálny objekt (v prehliadači window) pri bežnom volaní funkcie, pokiaľ nie je v režime prísnosti.
V režime prísnosti ('use strict') bude v rovnakom scenári this undefined.
Pri volaní metódy objektu, this odkazuje na samotný objekt.
const obj = {
method: function() {
console.log(this); // obj
}
};
obj.method();
Pri použití konštruktora (new s funkciou), this odkazuje na novovytvorený inštanciu objektu.
function Constructor() {
console.log(this); // inštancia Constructor
}
const instance = new Constructor();
Pri použití metód call, apply, bind, je this explicitne nastavené ako prvý argument.
function greet() {
console.log(`Ahoj, ${this.name}!`);
}
const person = { name: 'Alica' };
greet.call(person); // Ahoj, Alica!
greet.apply(person); // Ahoj, Alica!
const boundGreet = greet.bind(person);
boundGreet(); // Ahoj, Alica!
V šipkových funkciách (Arrow Functions) this nemá vlastný kontext. Leksikálne sa dedí z prostredia, v ktorom bola definovaná.
const obj2 = {
name: 'Bob',
greet: function() {
const arrowGreet = () => {
console.log(`Ahoj od ${this.name}!`); // this odkazuje na obj2
};
arrowGreet();
}
};
obj2.greet(); // Ahoj od Bob!
const obj3 = {
name: 'Charlie',
greet: () => {
console.log(`Ahoj od ${this.name}!`); // this odkazuje na window (alebo undefined v režime prísnosti), nie na obj3
}
};
obj3.greet(); // Ahoj od undefined! (alebo chyba)
Kontekst this môže byť nejasný, najmä pri odovzdávaní callbackov alebo v asynchrónnych operáciách. Pochopenie pravidiel this je kľúčové pre správne fungovanie JavaScriptu.