我有一个Date对象,我想创建另一个四小时后的Date对象。我写了以下代码
eventStart = new Date();
eventEnd = eventStart;
eventEnd.setHours(eventEnd.getHours() + 4);
console.log(eventStart);
console.log(eventEnd);
两个console.logs在四小时后给出相同的日期?
为什么setHours适用于这两个日期对象?是否有解决方法?
另请参阅以下JSFiddle:http://jsfiddle.net/AT3K2/
答案 0 :(得分:6)
当你这样做时
eventEnd = eventStart;
您将eventEnd
的值设置为与eventStart
相同,即引用到同一对象。也就是说,你没有两个对象,你有一个对象和两个对象:
+---------------------+ | eventStart variable |---\ +---------------------+ | +------------------------+ +--->| the actual Date object | +---------------------+ | +------------------------+ | eventEnd variable |---/ +---------------------+
要创建一个生命独立的新对象,请执行以下操作:
eventEnd = new Date(eventStart.getTime());
此操作通常称为克隆。