【问题标题】:javascript - how to NOT assign by referencejavascript - 如何不通过引用分配
【发布时间】:2012-02-03 01:40:24
【问题描述】:

好的,考虑一下这段代码:

var d1 = new Date();
var d2 = d1;

d2.setDate(d2.getDate()+1);
alert(d1 + "\n" + d2);

即使我在d2 上调用setDate()d1 也在递增。我理解这是因为 d1 通过引用分配给d2。我的问题是......我怎么不这样做,所以.setDate() 只适用于d2

【问题讨论】:

    标签: javascript reference


    【解决方案1】:

    在 JavaScript 中,all objects are assigned to variables 'by reference'。您需要创建对象的副本; Date 让一切变得简单:

    var d2 = new Date(d1);
    

    这将创建一个复制d1 值的新日期对象。

    【讨论】:

      【解决方案2】:

      你需要

      var d2 = new Date(d1.getTime());
      

      更多详情请见How to clone a Date object in JavaScript

      【讨论】:

        【解决方案3】:

        认为这应该可行:

        var d1 = new Date();
        var d2 = new Date();
        d2.setDate(d1.getDate());
        
        d2.setDate(d2.getDate()+1);
        alert(d1 + "\n" + d2);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2017-04-15
          • 1970-01-01
          • 2016-05-08
          • 1970-01-01
          • 2012-11-23
          • 2016-07-12
          • 1970-01-01
          相关资源
          最近更新 更多