我正在使用date.js库。

先前的代码:

alert(incidentDate);
var deadlineDate = incidentDate;
deadlineDate.add(2).years();
alert(incidentDate);
return;


添加到deadlineDate也会导致incidentDate更改。一些阅读显示这是因为javascript中的对象总是按引用分配。我找到了一种解决方法(如下),但是它杂乱无章。当然必须有一些更整洁的方法吗?

此外,我使用的解决方法仅适用于Date对象。我将如何处理其他对象类型?

当前代码:

var deadlineDate;
deadlineDate = incidentDate.toString('yyyy-MM-dd');
alert(incidentDate);
alert(deadlineDate);
deadlineDate = Date.parse(deadlineDate);
alert(incidentDate);
alert(deadlineDate);
deadlineDate.add(2).years();
alert(incidentDate);
alert(deadlineDate);
return;


注意:所有警报仅用于调试。

最佳答案

正如Anurag所说,唯一的通用解决方案是cloning。但是,有一种更好的方法来编写您的解决方法。使用毫秒值创建一个新的日期,而不是格式化一个字符串然后对其进行解析。

09-28 03:23