【问题标题】:How do you stop javascript assigning objects by reference?你如何停止javascript通过引用分配对象?
【发布时间】:2010-07-21 16:23:12
【问题描述】:

我正在使用 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;

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

【问题讨论】:

  • 删除警报后就不会那么混乱了。通用答案是克隆,但它只适用于普通对象,不适用于特定类型的对象。
  • 仅供参考,alert 可用于非常快速的调试,但它确实限制了您的调试能力并最终减慢您的速度。您应该熟悉 F12 开发者工具窗口和console.log/console.table。您可以输出整个对象、多个对象,并单击属性以查看发生了什么。

标签: javascript date object


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-05
    • 1970-01-01
    • 1970-01-01
    • 2016-03-31
    相关资源
    最近更新 更多