Jak działa słowo kluczowe 'this' w JavaScript?

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).