Помогите организовать код

109
20 марта 2019, 05:20

Есть задача получить данные о человеке и высчитать дни до др с помощью классов и конструкторов используя гет, сет.

class Persona {
  constructor(first, last, day, month, year) {
    this.name = {
      first,
      last
    };
    this.Birthday = {
      day,
      month,
      year
    };
  }
  get fullName() {
    return `${this.name.first} ${this.name.last}`;
  }
}
var person1 = new Persona('Name', 'Surname', 11, 11, 1111);
console.log(person1.fullName);

Не закончил код, так как не пойму как высчитать правильно, вот нашел функцию, что по идее это делает.

  function daysLeft() { 
  var year = parseInt(prompt('enter year (format: YYYY)'));
  var month = parseInt(prompt('enter month (format: M)'));
  var day = parseInt(prompt('enter day')); 
  var today = new Date();
  today.setHours(0,0,0,0);
  var nextDate = new Date([today.getFullYear(),month,day].join(',')); 
  if (nextDate < today) nextDate.setFullYear(today.getFullYear()+1);
  msPerDay = 24*60*60*1000; 
  daysLeft = Math.round((nextDate.getTime() - today.getTime())/msPerDay);
  dayname = "";
  ds = ""+daysLeft;
  dd=parseInt(ds.substr(ds.length-1));
    } 
  }

помогите плиз правильно все записать

Answer 1

Насколько я понял вам нужно вот это:

class Persona {
    constructor(first, last, day, month, year) {
        this.name = {
            first,
            last
        };
        this.Birthday = {
            day,
            month,
            year
        };
    }
    get fullName() {
        return `${this.name.first} ${this.name.last}`;
    }
    get daysToBirthday() {
        const today = new Date();
        today.setHours(0, 0, 0, 0);
        const nextDate = new Date([today.getFullYear(), this.Birthday.month, this.Birthday.day].join(','));
        if (nextDate < today) {
            nextDate.setFullYear(today.getFullYear() + 1);
        }
        const msPerDay = 24 * 60 * 60 * 1000;
        return Math.round((nextDate.getTime() - today.getTime()) / msPerDay) - 1;
    }
}
const person1 = new Persona('Name', 'Surname', 31, 12, 1990);
console.log(person1.fullName);
console.log(person1.daysToBirthday)
READ ALSO
Поймать событие нажатие по ссылке jquery

Поймать событие нажатие по ссылке jquery

Есть некий Tabs сформированный с помощью виджета в YII2

146
Codemirror: как избежать преобразования тегов?

Codemirror: как избежать преобразования тегов?

Я использую codemirror для редактирования HTML страницыМой код:

141
Как указать значения по умолчанию при деструктурирующем клонировании объекта?

Как указать значения по умолчанию при деструктурирующем клонировании объекта?

можно ли при клонировании объекта в духе ( clone = {…origin} ) воспользоваться значениями по умолчанию?

149
Что выведет здесь JavaScript?

Что выведет здесь JavaScript?

Изучаю JavaScriptЕсть такой код:

120