@salat228

Почему когда this хранится в свойстве one, возвращает Window?

let a = {
    one: this,
    two: 'test' 
}
console.log(a.one) // Window
console.log(a.one.two) // Ошибка

a.one возвращает window но когда использую one как метод, все нормально
let a = {
    one() {
      return this
    },
    two: 'test' 
}
console.log(a.one())
console.log(a.one().two) // test

Как это работает?? Я не понимаю
  • Вопрос задан
  • 93 просмотра
Пригласить эксперта
Ответы на вопрос 1
sergiks
@sergiks Куратор тега JavaScript
♬♬
Первый вариант кода равносилен такому:
const that = this; // Window
let a = {
    one: that, // всё тот же Window
    two: 'test' 
}
console.log(a.one) // Window

и такому со стрелочной функцией:
const one = () => this; // объявили в глобальном контексте
let a = {
  one,
  two: "two",
}
a.one() // Window
Где функцию объявили, «в то отделение и обращайтесь» )

Конечно, стоит перечитать
  1. про this
  2. про привязку контекста
  3. про стрелочные функции
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы