Junior
Co je klíčové slovo 'this'?
sobes.tech AI
Odpověď od AI
this je klíčové slovo v JavaScriptu, které odkazuje na objekt, ve kterém je aktuální kód vykonáván. Jeho hodnota je určena způsobem volání funkce.
Hlavní způsoby určení this:
- Globální kontext: Mimo funkci,
thisodkazuje na globální objekt (windowv prohlížeči,globalv Node.js). - Obvyklé volání funkce: V ne-striktním režimu (
strict mode)thistaké odkazuje na globální objekt (neboundefined, pokud je funkce volána jako metoda objektu, ale tento objekt jenullneboundefined). V režimu přísném jethisrovnoundefined. - Metoda objektu: Pokud je funkce volána jako metoda objektu (tj. přes operátor tečky
.),thisodkazuje na objekt, který metodu vlastní. - Konstruktor: Při použití operátoru
newthisodkazuje na nový vytvářený instance objektu. - Metody
call(),apply(),bind(): Tyto metody umožňují explicitně nastavit hodnotuthispři volání funkce.bind()vrací novou funkci s navázanýmthis, zatímcocall()aapply()volají funkci s určenýmthis. - Šipkové funkce: Šipkové funkce nemají vlastní
this.thisv šipkové funkci je lexikálně děděno z okolního prostředí, ve kterém byla definována.
Příklady:
// Globální kontext
console.log(this === window); // true (v prohlížeči)
// Obvyklé volání funkce
function myFunction() {
console.log(this);
}
myFunction(); // window (v ne-striktním režimu)
// Metoda objektu
const myObject = {
myMethod: function() {
console.log(this);
}
};
myObject.myMethod(); // myObject
// Konstruktor
function MyConstructor() {
this.value = 10;
console.log(this);
}
const instance = new MyConstructor(); // instance objekt
// 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á funkce
const arrowFunction = () => {
console.log(this);
};
arrowFunction(); // window (pokud je definována v globálním kontextu)
Pochopení toho, jak je this určováno v různých kontextech, je klíčové pro psaní správného JavaScriptového kódu.