Я очень смущаюсь о значении this
в момент вызова функции, используя функции стрелки. Давайте возьмем мой пример:Значение этого метода внутри объекта?
var obj = {
property: 5,
func1: function() {
console.log(this.property);
},
func2:() => {
console.log(this.property);
}
}
Когда я поставил этот код на консоли браузера, происходит интересная вещь, func1()
будет выводить 5
как ожидалось *, но когда я запускаю func2
я получил undefined
. Что здесь происходит? Почему значение внутри func2
ссылается на глобальный объект (Window
в этом случае).
Я думаю, что ожидаю, что выход, потому что это так, как это работает, вот почему Алан и slevetman объясняют here и here соответственно. Но согласно the Jason's explanation
Функции стрелки не имеют своего значения. Значение этого параметра внутри функции стрелки всегда унаследовано от охватывающей области.
Итак, почему значение этого внутри func2
не наследует значение его ограждающих сферы obj
?
Кажется, вы понимаете, как 'this' ведет себя по-разному в функциях стрелки, но вы не понимаете, как' this' ведет себя в целом. – Oriol