Javascript это в глобальном контексте не работает или кажется, что console.log работает, но использование ref не работает - PullRequest
0 голосов
/ 24 марта 2020

Так что мне интересно различие между двумя вызовами в приведенном ниже коде: насколько я понимаю, когда я получаю ref для работы с использованием user.credential.getID, я должен иметь возможность выполнить его, и, похоже, он отлично работает в console.log (user.credentials.getID ()); // это работает

const user = {
  id: 551,
  name: 'Tom',
  getID() {
    return this.id;
  },

  credentials: {
    id: 120,
    name: 'Jack',
    getID() {
      return this.id;
    }
  }

}
var getId = user.credentials.getId;
console.log(getId); // undefined why?
console.log(user.credentials.getID()); // it works

1 Ответ

0 голосов
/ 24 марта 2020

Необходимо помнить только одно правило: this берет свое значение из того места, где была вызвана функция. Если вы вызываете функцию из объекта, например obj.func(), this будет obj. Если вы звоните из ниоткуда, например, func(), this будет undefined или window, в зависимости от того, находитесь ли вы в strict mode или нет.

...