Słowo kluczowe this w JavaScript odnosi się do obiektu, w kontekście którego jest wywoływana funkcja. Jego wartość jest dynamiczna i zmienia się w zależności od kontekstu wywołania funkcji. Zrozumienie działania this jest kluczowe dla efektywnego programowania w JavaScript, szczególnie w kontekście funkcji, metod obiektów oraz w programowaniu opartym na klasach.
Jak działa this?
Wartość this w funkcji zależy od sposobu, w jaki funkcja została wywołana:
This w kontekście globalnym lub wewnątrz funkcji wywołanej bezpośrednio (nie jako metoda obiektu), this odnosi się do globalnego obiektu (window w przeglądarkach, global w Node.js)
console.log(this); // W przeglądarkach wyświetli globalny obiekt `window`
function showThis() {
console.log(this);
}
showThis(); // Globalny obiekt window ponownie
This w metodach obiektów, this odnosi się do obiektu, na rzecz którego metoda została wywołana.
let car = {
brand: "Ford",
model: "Mustang",
showDetails: function() {
console.log(`Marka: ${this.brand}, Model: ${this.model}`);
}
};
car.showDetails(); // Marka: Ford, Model: Mustang
This w konstruktorach i klasach, this odnosi się do instancji obiektu utworzonej przez konstruktor lub klasę.
function Car(brand, model) {
this.brand = brand;
this.model = model;
}
let myCar = new Car("Ford", "Mustang");
console.log(myCar.brand); // Ford
Funkcje strzałkowe a this
Funkcje strzałkowe (arrow functions) nie mają własnego this, zamiast tego dziedziczą this z otaczającego kontekstu leksykalnego. Oznacza to, że this wewnątrz funkcji strzałkowej zawsze odnosi się do wartości this z zasięgu, w którym funkcja strzałkowa została zdefiniowana.
let car = {
brand: "Ford",
model: "Mustang",
showDetails: function() {
setTimeout(() => {
console.log(`Marka: ${this.brand}, Model: ${this.model}`);
}, 1000);
}
};
car.showDetails(); // Marka: Ford, Model: Mustang (po 1 sekundzie)
Podsumowanie
Słowo kluczowe this w JavaScript jest dynamiczne i jego wartość zależy od kontekstu wywołania funkcji. Może odnosić się do globalnego obiektu, obiektu, na rzecz którego została wywołana metoda, instancji obiektu utworzonej przez konstruktor, a w przypadku funkcji strzałkowych – dziedziczy this z otaczającego zakresu leksykalnego. Zrozumienie działania this jest niezbędne do efektywnego wykorzystania obiektów i klas w JavaScript.
Jeżeli chcesz przyśpieszyć swoją naukę chciałbym polecić mój kurs video JavaScript w którym nauczysz się tego języka od podstaw do zaawansowanych jego koncepcji.
