javascript - 如何不通过引用分配

时间:2012-02-03 01:40:25

标签: javascript reference

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

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

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

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

3 个答案:

答案 0 :(得分:10)

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

var d2 = new Date(d1);

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

答案 1 :(得分:1)

你需要

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

有关详细信息,请参阅How to clone a Date object in JavaScript

答案 2 :(得分:0)

认为这应该有效:

var d1 = new Date();
var d2 = new Date();
d2.setDate(d1.getDate());

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