javascript - 如何不通过引用分配

sli*_*khi 4 javascript reference

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

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

d2.setDate(d2.getDate()+1);
alert(d1 + "\n" + d2);
Run Code Online (Sandbox Code Playgroud)

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

jos*_*736 10

在JavaScript中,所有对象都通过引用分配给变量.您需要创建对象的副本; Date让它变得简单:

var d2 = new Date(d1);
Run Code Online (Sandbox Code Playgroud)

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