Junior
Čo je kľúčové slovo 'this'?
sobes.tech AI
Odpoveď od AI
this je kľúčové slovo v JavaScripte, ktoré odkazuje na objekt, v kontexte ktorého sa vykonáva aktuálny kód. Jeho hodnota je určená spôsobom volania funkcie.
Hlavné spôsoby určenia this:
- Globálny kontext: Mimo funkcie,
thisodkazuje na globálny objekt (windowv prehliadači,globalv Node.js). - Obvyklé volanie funkcie: V ne-striktne režime (
strict mode)thistiež odkazuje na globálny objekt (aleboundefined, ak je funkcia volaná ako metóda objektu, ale tento objekt jenullaleboundefined). V prísnom režime jethisrovnéundefined. - Metóda objektu: Ak je funkcia volaná ako metóda objektu (t.j. cez operátor bodky
.),thisodkazuje na objekt, ktorý vlastní metódu. - Konstruktor: Pri použití operátora
new,thisodkazuje na nový vytváraný inštanciu objektu. - Metódy
call(),apply(),bind(): Tieto metódy umožňujú explicitne nastaviť hodnotuthispri volaní funkcie.bind()vracia novú funkciu s naviazanýmthis, zatiaľ čocall()aapply()volajú funkciu s určenýmthis. - Šipkové funkcie: Šipkové funkcie nemajú vlastný
this.thisv šipkovej funkcii je lexikálne dedené z okolia, v ktorom bola definovaná.
Príklady:
// Globálny kontext
console.log(this === window); // true (v prehliadači)
// Obvyklé volanie funkcie
function myFunction() {
console.log(this);
}
myFunction(); // window (v ne-striktne režime)
// Metóda objektu
const myObject = {
myMethod: function() {
console.log(this);
}
};
myObject.myMethod(); // myObject
// Konštruktor
function MyConstructor() {
this.value = 10;
console.log(this);
}
const instance = new MyConstructor(); // inštancia objektu
// call(), apply(), bind()
function greet(name) {
console.log("Hello, " + name + "! My name is " + this.name);
}
const person = { name: "Alice" };
greet.call(person, "Bob"); // Hello, Bob! My name is Alice
greet.apply(person, ["Bob"]); // Hello, Bob! My name is Alice
const boundGreet = greet.bind(person);
boundGreet("Bob"); // Hello, Bob! My name is Alice
// Šipková funkcia
const arrowFunction = () => {
console.log(this);
};
arrowFunction(); // window (ak je definovaná v globálnom kontexte)
Pochopenie toho, ako je this určované v rôznych kontextoch, je kľúčové pre písanie správneho JavaScriptového kódu.