javascript setMonth() - 从date1设置一个月到date2。为什么date1也会改变?

时间:2017-03-28 08:30:16

标签: javascript date

我知道,标题可能不清楚,但我有这段代码:



var date1=new Date();
alert(date1);
var date2=date1;
alert(date2);
date2.setMonth(date1.getMonth() + 6);
alert(date1+" - "+date2);




为什么date1会改变?我认为date1应该在六个月之后仍然是当前的日期和日期......

由于

3 个答案:

答案 0 :(得分:5)

日期是JavaScript中的对象。设置date2=date1后,date1date2都会引用同一个对象。由于它们都是对同一日期对象的引用,因此可以使用其中任何一个来更新或检查对象。

答案 1 :(得分:1)

两个变量都指向同一个日期对象。你可以这样做

var date1=new Date();
alert(date1);
var date2=new Date(date1.valueOf());
alert(date2);
date2.setMonth(date1.getMonth() + 6);
alert(date1+" - "+date2);

在这种方法中,我使用现有值创建新对象。现在有两个对象由不同的变量指向。

虽然您已为这两个变量分配了相同的对象。

答案 2 :(得分:0)

因为date2获取对date1的引用,而不是value。