На данный вопрос уже ответили:
есть следующий код на 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);
Виртуальный выделенный сервер (VDS) становится отличным выбором
Задумался вот о чём: на сайтах по js написано, что лучше всего реализовывать модуль через такой приём:
Почему значения элементов в массиве finalPay имеют значение NAN? Как добавить сумму элементов массивов billValues и allTips в массив finalPay?
Надо доделать часть, где берётся некое значение и проверяется на сервере нет ли пользователей с такими же id, и выводить их на googlemaps как маркеры