#javascript #object
Вопрос:
Я создал простой объект ниже,
let user = {
birthYear: 1991,
calcAge: function () {
return 2021 - this.birthYear;
},
currentAge: calcAge(), //`-------------------- x`
};
console.log(user.calcAge());
получение ошибки x
при ошибке ссылки. В чем может быть ошибка?
Ответ №1:
Функция определяется внутри user
объекта. Поэтому вы называете это через user.calcAge()
так:
let user = {
birthYear: 1991,
calcAge: function() {
return 2021 - this.birthYear;
},
currentAge: function() {
return user.calcAge();
},
};
console.log(user.currentAge());
Ответ №2:
Пара разных способов заставить это работать.
Может упростить и превратить calcAge
в функцию по своей сути:
let user = {
birthYear: 1991,
calcAge () {
return 2021 - this.birthYear;
},
};
console.log(user.calcAge());
Может быть, разбить ваши переменные на более явные:
let user = {
birthYear: 1991,
currentYear: 2021,
calcAge () {
return this.currentYear - this.birthYear;
},
};
console.log(user.calcAge());
Можно было бы рассмотреть возможность использования метода получения объектов. Это рассматривает его как свойство объекта, а не как вызываемый метод.
let user = {
birthYear: 1991,
currentYear: 2021,
get currentAge() {
return this.currentYear - this.birthYear;
},
};
console.log(user.currentAge);
Ответ №3:
вот еще один способ, которым вы можете это сделать.
let user = {
birthYear: 1991,
calcAge: function() {
this.currentAge = 2021 - this.birthYear;
}
}
user.calcAge()
console.log(user.currentAge);