На данный вопрос уже ответили:
есть следующий код на js
var AllDate = {
curdate: new Date(),
begining: new Date ("2018-06-23T00:00:00.000"),
deferense: function () {
return Math.trunc((this.curdate - this.begining)/1000/60/60/24);
}(),
};
Но по итогу мы имеем AllDate.deferense = NaN;
Как это исправить?
function () {
return Math.trunc((this.curdate - this.begining)/1000/60/60/24);
}()
Это самовызывающаяся анонимная функция, которая никакого отношения к контексту объекта во время выполнения иметь не будет. Лучше всего в данном случае использовать геттер
var AllDate = {
curdate: new Date(),
begining: new Date ("2018-06-23T00:00:00.000"),
get deferense() {
return Math.trunc((this.curdate - this.begining)/1000/60/60/24);
},
};
console.log(AllDate.deferense)
У Вас метод deferense запускается тогда, когда еще объект не создался. Как вариант можете это действие разделить на две части или вызвать с помощью call с передачей объекта в виде контекста.
var AllDate = {
curdate: new Date(),
begining: new Date("2018-06-23T00:00:00.000"),
deferense: function() {
//console.log(this);
return Math.trunc((this.curdate - this.begining) / 1000 / 60 / 60 / 24);
}.call(AllDate),
};
console.log(AllDate);
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости