QUESTION: Як працює this?
Ключове слово this у JavaScript визначає контекст, у якому виконується поточний код. Його значення динамічно обчислюється в момент виклику самої функції, а не в момент її оголошення. Поведінка this залежить від кількох чітких правил, що визначають спосіб виклику функції.
Якщо функція викликається як метод об'єкта, то this вказує на сам цей об'єкт. Це дозволяє методам звертатися до властивостей свого власника. У звичайній функції, викликаній без будь-якого контексту, this посилається на глобальний об'єкт window у браузері або на undefined у строгому режимі, що часто стає джерелом помилок у розробників-початківців.
Стрілочні функції поводяться зовсім інакше. Вони не мають власного this, і вони успадковують його значення із зовнішнього лексичного контексту на момент свого створення. Це робить їх ідеальними для використання всередині методів об'єктів або колбэков, де потрібно надійно зберегти контекст зовнішньої функції.
При створенні об'єкта за допомогою оператора new через функцію-конструктор або клас, this всередині цієї функції посилається на щойно створений об'єкт. Нарешті, спеціальні методи дозволяють керувати контекстом вручну. Аналізуючи місце виклику функції, можна легко визначити, на що саме вказує this у кожному конкретному випадку.