Почему в стрелочной функции иначе работает this
почему в стрелочной функции, присвоенной свойству func в объекте obj, не виден контекст этого объекта?
const obj = {
prop: 'Ok',
func: () => {
return this.prop;
}
}
console.log(obj.func()); // TypeError: Cannot read properties of undefined (reading 'prop')
Ответы
Ivan Gagarinov
25 апреля 2022
Стрелочные функции не имеют своего контекста this
, поэтому они сохраняют текущий контекст, в котором были созданы. Не смотря на то, что в примере функция присваивается свойству объекта, само создание функции происходит в момент присваивания, объект в этот момент ещё не создан. Функция привязывается к тому контексту, в котором была создана - это называется "раннее связывание".
Есть и "позднее связывание", где функция привязывается к контексту того объекта, в котором находится. Такие функции создаются с помощью ключевого слова function
:
const obj = {
prop: 'Ok',
func: function() {
return this.prop;
},
};
console.log(obj.func()); // => 'Ok'
4
0