Правильно ли я понимаю, что в этом коде в 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();
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: () => {
user2.city.forEach(city => {
console.log(`${user2.name} live in ${city}`)
});
}
}
user2.printLocation()
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Подскажите пожалуйста почему этот простейший скрипт выводит ошибку:
Как определить пересечение графиков работы клиентов? Например, если первый клиент работает с 7 до 15, а второй с 6 до 10, то пересечением будет...
Как перевести дату 2018-05-27T16:45:00+03:00 в формат '27-05-2018 00:17:14', 'dd-mm-yyyy hh24:mi:ss'