Привет всем. Думал что понимаю, как работает контекст, оказалось, что нет. Я накидал простой пример:
https://codesandbox.io/s/ppk1v97yrj
Есть функция logThis, которая выводит в консоль текущий this. Очевидно, что если просто ее вызвать, this указывает на Window/undefined (в strict mode).
Второй тест - создание объекта, с методом, который вызывает logThis. Тоже очевидно, что this будет указывать на этот объект.
Третий тест - создание объекта через new с использованием функции, объект использует logThis через прототип. Тут this указывает на TestOne и это тоже понятно.
Четвертый тест - создание объекта через new с использованием class. Я не смотрел, как под капотом ES6 работает с классами, но есть подозрения, что должно получиться что-то вроде
этого. Но видимо не совсем так, потому что this уже указывает на Window/undefined.
Соответственно есть вопрос, почему в 4 случае он указывает на window? Ведь this высчитывается динамически в зависимости от того, на каком объекте он вызыван, а в данном случае он вызван на объекте testObjTwo. Если у кого-то есть статья, где в деталях рассказывается про context, было бы замечательно.