Junior
Mi az a kulcsszó, hogy 'this'?
sobes.tech MI
Válasz az MI-től
A this egy kulcsszó a JavaScript-ben, amely a jelenlegi kód végrehajtásának kontextusában hivatkozott objektumra utal. Értéke attól függ, hogyan hívják meg a függvényt.
A this meghatározásának fő módjai:
- Globális kontextus: Függvényen kívül a
thisa globális objektumra (windowböngészőben,globalNode.js-ben) utal. - Normál függvényhívás: Nem szigorú módban (
strict mode) athisszintén a globális objektumra utal (vagyundefined, ha a függvényt egy objektum metódusaként hívják, de ez az objektumnullvagyundefined). Szigorú módban athisundefined. - Objektum metódus: Ha a függvényt objektum metódusaként hívják (azaz a pont operátor
.-t használva), akkor athisaz objektumra utal, amelyik a metódust birtokolja. - Konstruktor: A
newoperátor használatakor athisaz újonnan létrehozott objektum példányára utal. call(),apply(),bind()metódusok: Ezek a metódusok lehetővé teszik athisértékének explicit beállítását a függvény hívásakor.bind()egy új függvényt ad vissza, amelyhez athiskötött, míg acall()ésapply()a függvényt a megadottthis-el hívják.- Nyíl függvények: A nyíl függvényeknek nincs saját
this-ük.thisegy nyíl függvényben lexikálisan öröklődik a környező környezetből, ahol definiálták.
Példák:
// Globális kontextus
console.log(this === window); // true (böngészőben)
// Normál függvényhívás
function myFunction() {
console.log(this);
}
myFunction(); // window (nem szigorú módban)
// Objektum metódus
const myObject = {
myMethod: function() {
console.log(this);
}
};
myObject.myMethod(); // myObject
// Konstruktor
function MyConstructor() {
this.value = 10;
console.log(this);
}
const instance = new MyConstructor(); // példány objektum
// 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
// Nyíl függvény
const arrowFunction = () => {
console.log(this);
};
arrowFunction(); // window (ha globális környezetben van definiálva)
A this meghatározásának megértése különböző kontextusokban kritikus a helyes JavaScript kód írásához.