@yankoyski

Простыми словами о this в стрелочных функциях?

Расскажите простыми словами о this в стрелочных функциях. Особенно интересует стрелочные функции, как методы объектов. И поясните пожалуйста следующую непонятную мне вещь:

есть код:
let group = {

    prop: false,

    d: function () {
        (() => {
            this.prop = true;
            return this.prop;
        })();
    },
};

console.log(group.d()); //undefined
console.log(group); //{prop: true, d: ƒ}


Почему вызов group.d() изменяет значение this.prop, но не может его вернуть?
  • Вопрос задан
  • 504 просмотра
Решения вопроса 1
https://habr.com/company/ruvds/blog/419371/

Потому что функция d ничего не возвращает, чего вы ожидали ?
let group = {

    prop: false,

    d: function () {
        return (() => {
            this.prop = true;
            return this.prop;
        })();
    },
};

console.log(group.d()); // true
console.log(group);     // {prop: true, d: ƒ}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Stalker_RED
@Stalker_RED
Стрелочные функции не создают собственный контекст this, а используют значение this окружающего контекста.
© mdn

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

group.d() вызваный внутри group делает все как надо, а вызваный в контексте window - нет. И более того, у него нет return.

UPD: вообще group.d это обычная функция, стрелочная уже у него внутри.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы