рони,
Каким образом можно подставить значение свойства объекта таким образом, чтобы 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);
};