Показать сообщение отдельно
  #10 (permalink)  
Старый 10.02.2018, 17:37
Интересующийся
Отправить личное сообщение для Gtfuc Посмотреть профиль Найти все сообщения от Gtfuc
 
Регистрация: 22.08.2017
Сообщений: 27

рони,
Каким образом можно подставить значение свойства объекта таким образом, чтобы time.value = возвращал вычисленное значение?
При value: '2017-04-20 14:00' тест проходит, но как свойству передать новое значение?
module.exports = function (date) {
    var obj = {
        value: '2017-04-20 14:00',
        init: function(date) {
            var arr = date.split(/[\s:-]/);
            this.newDate = new Date(arr[0], arr[1] - 1, arr[2], arr[3], arr[4]);
            return this;
        },
        add: function(value, type) {
                if (value > 0 && type in this.method) {
                    return this.setValue(value, this.method[type]);
                } else {
                    throw new TypeError("Передано неверное значение");
                }

        },
        subtract: function(value, type) {
            if (value > 0 && type in this.method) {
                return this.setValueSubtract(value, this.method[type]);
            } else {
                throw new TypeError("Передано неверное значение");
            }
        },
        method: {
            "years": "FullYear",
            "months": "Month",
            "days": "Date",
            "hours": "Hours",
            "minutes": "Minutes"
        },
        setValue: function(value, method) {
            this.newDate['set' + method](value + this.newDate['get' + method]());
            return this;
        },
        setValueSubtract: function(value, method) {
            this.newDate['set' + method](-value + this.newDate['get' + method]());
            return this;
        },
        toString: function() {
            var year = this.newDate.getFullYear();
            var month = this.newDate.getMonth();
            var day = this.newDate.getDate();
            var hours = this.newDate.getHours();
            var minutes = this.newDate.getMinutes();
            return year + "-" + month + "-" + day + " " + hours + ":" + minutes;
        },
        valueOf: function() {
            return +this.newDate
        }
    };
    return obj.init(date);
};
Ответить с цитированием