Страницы

Поиск по вопросам

понедельник, 8 апреля 2019 г.

Контекст в JS (this) [дубликат]

На данный вопрос уже ответили: Потеря контекста вызова 5 ответов Правильно ли я понимаю, что в этом коде в 1-м варианте так как у стрелочных функций нету this она берет this у "родителя" , а во 2-м варианте this вообще нету поэтому будет ошибка?
const user = { name: 'Bob', city: ["Madrid", 'Rome', 'LA'], printLocation: function() { this.city.forEach(city => { console.log(`${this.name} live in ${city}`) }) } } user.printLocation() const user2 = { name: 'Bred', city: ["Madrid", 'Rome', 'LA'], printLocation: () => { this.city.forEach(city => { console.log(`${this.name} live in ${city}`) }) } } user2.printLocation()


Ответ

а во 2м варианте this вообще нету
this есть, но в данном случае ссылается он на объект window. В стрелочных функциях, this подхватывает значение лексического контекста. Если простым словами, то значение this внутри стрелочной функции, будет таким же, как и снаружи. Однако, в ES6 появились именно методы объекта и для более короткого синтаксиса, можете использовать их:
const user = { name: 'Bred', city: ["Madrid", 'Rome', 'LA'], printLocation() { this.city.forEach(city => { console.log(`${this.name} live in ${city}`); }); } }; user.printLocation();

Комментариев нет:

Отправить комментарий