代码之家  ›  专栏  ›  技术社区  ›  TRiG

如何停止JavaScript通过引用分配对象?

  •  1
  • TRiG  · 技术社区  · 14 年前

    我正在使用date.js库。

    以前的代码:

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

    添加到 deadlineDate 引起 incidentDate 也要改变。一些阅读显示,这是因为JavaScript中的对象总是通过引用分配的。我找到了一个解决办法(下面),但它是盛开凌乱。一定有更整洁的方法来做这件事吧?

    此外,我使用的变通方法只适用于日期对象。如何处理其他对象类型?

    当前代码:

    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;
    

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

    1 回复  |  直到 14 年前
        1
  •  0
  •   Community THelper    7 年前

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