Это не проблема с Datejs, а особенность (?) Объектов JavaScript Date. В JavaScript объект Date является изменчивым, и установка значения объекта Date
для новой переменной создает ссылку на оригинал, а не на новый объект.
Это можно продемонстрировать с помощью простого старого JavaScript (без Datejs):
Exmaple
var a = new Date(2011, 0, 1);
var b = a;
var c = b;
console.log('a', a); // 1-Jan-2011
console.log('b', b); // 1-Jan-2011
console.log('c', c); // 1-Jan-2011
// setting only 'a' will cause 'b' and 'c' to update as well.
a.setDate(10);
console.log('a', a); // 10-Jan-2011
console.log('b', b); // 10-Jan-2011
console.log('c', c); // 10-Jan-2011
Способ обойти эту проблему, если использовать Datejs, заключается в «клонировании» объектов Date. В следующем примере демонстрируется использование функции .clone()
для объектов Date 'b' и 'c'.
Пример
var a = new Date(2011, 0, 1);
var b = a.clone(); // clone creates a new 'copy' of 'a'.
var c = b.clone();
console.log('a', a); // 1-Jan-2011
console.log('b', b); // 1-Jan-2011
console.log('c', c); // 1-Jan-2011
a.setDate(10);
console.log('a', a); // 10-Jan-2011
console.log('b', b); // 1-Jan-2011
console.log('c', c); // 1-Jan-2011
Запустив вышеизложенное, вы должны увидеть, что окончательные результаты «b» и «c» по-прежнему отражают их исходные значения, даже если «a» изменилось.
Надеюсь, это поможет.