Задать вопрос
@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 Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 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. про стрелочные функции
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
24 дек. 2024, в 19:16
5000 руб./за проект
24 дек. 2024, в 19:08
20000 руб./за проект
24 дек. 2024, в 18:29
1500 руб./за проект