this:
- słowo kluczowe odnoszące się się do obiektu, który wywołuje aktualnie wykonaną funkcję
- wskazywany obiekt zależy od kontekstu wywołania funkcji
- wartość this zmienia się w zależności od tego, w jaki sposób i gdzie funkcja jest wywoływana
Różne Use Cases:
1. this w funkcjach globalnych
- console.log(this); // W przeglądarkach 'this' odnosi się do obiektu window
2. this w funkcjach zwykłych
- funkcja jest wywoływana w sposób globalny (bez przypisania jej do jakiegoś obiektu), this odnosi się do obiektu globalnego
(czyli window w przeglądarkach).
3. this w metodach obiektów
- Kiedy funkcja jest wywoływana jako metoda obiektu, this odnosi się do obiektu, który wywołuje tę metodę.
4. this w funkcjach strzałkowych
- Funkcje strzałkowe różnią się od zwykłych funkcji, bo nie mają własnego this i dziedziczą this z otaczającego kontekstu.
Inne Use Cases:
5. this w konstruktorach i klasach
6. this w zdarzeniach (event handlers)
7. this w call(), apply() i bind()
8. this w trybach ścisłych ('strict mode', np. w Node.js, ES Modules w przeglądarkach)
- każdy plik JavaScript jest traktowany jako moduł, a moduły mają własny kontekst
- moduł w Node.js działa w trybie "strict mode" z definicji i this nie jest przypisane do globalnego obiektu (global w Node.js).