0

Сколько статей уже не прочитал, не могу понять, как работает this со стрелочными функциями. Как я понял, в случае с обычной функцией this зависит от контекста выполнения, а стрелочная функция берет this, в котором создана. Тогда у меня вопрос:введите сюда описание изображения

Почему стрелочная функция консолит name из глобала? Она же создана в объекте person, значит, this = person! Объясните пожалуйста, как это работает. Я понимаю call, apply,bind, но тут застрял :( P.S. введите сюда описание изображения

Как я понял, this берет значение ближайшей внешней функции, вот и все

1 Answers1

3

Стрелочные функции особенные: у них нет своего «собственного» this. Если мы используем this внутри стрелочной функции, то его значение берётся из внешней «нормальной» функции.

Например, здесь arrow() использует значение this из внешнего метода user.sayHi():

Это является особенностью стрелочных функций. Они полезны, когда мы на самом деле не хотим иметь отдельное значение this, а хотим брать его из внешнего контекста.

https://learn.javascript.ru/object-methods

https://learn.javascript.ru/arrow-functions

Короче, в приведённом примере стрелочная функция не видит person, а выше person в данном случае только глобальные переменные

Zhihar
  • 37,513
  • То есть стрелочная функция берет this от ближайшей внешней функции? Я-то думал, что она берет this от объекта, в котором "родилась"... – Никита Суханов Oct 26 '20 at 06:55