someObj = {
showThis: () => {
console.log(this)
}
}
someObj.showThis()`
Знаю, что arrow function не имеет своего контекста, в моем понимании, this должен указывать на контекст someObj, но указывает на window, почему так?
Не бейте((
Потому что объекты не создают своего контекста. Change my mind
А если вместо стрелки использовать function? this указывает на объект
Когда там обычная функция, то this ни на что не указывает, если он не забинжен. Просто при обращении object.method ты передаешь в method ссылку на свой object, который присваивается в this
стрелочная функция имеет свой контекст, но берёт её с внешнего this, когда ты создаёшь обычную функцию, это означает, что ты её создаешь в контексте этого объекта, когда ты создаешь стрелочную функцию, ты создаешь её в контексте внешнего объекта, у тебя получается что это window, потому что это внешний объект, попробуй создать объект somePerson в someObj и вывести this в стрелочной функции в somePerson, у тебя выведется someObj, потому что это внешний контекст, запомни, контекст создаётся в объекте в котором он создан
Создал объект secondObj в firstObj и this стрелочной функции в secondObj указывает на window ;-;
Можно пруф, что стрелочная функция имеет свой контекст? Если это так, то почему стрелочная функция в стрелочной функции не ссылается на контекст первой стрелочной функции?
https://risen.dev/posts/js-in-details-part-1/
Обсуждают сегодня