我有一个 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/
最佳答案
当你这样做的时候
eventEnd = eventStart;
您将 eventEnd
的值设置为与 eventStart
相同,即对同一个对象。也就是说,您没有两个对象,您有一个一个对象和两个对它的引用:
+---------------------+ | eventStart variable |---\ +---------------------+ | +------------------------+ +--->| the actual Date object | +---------------------+ | +------------------------+ | eventEnd variable |---/ +---------------------+
To create a new object whose life will be independant, do this :
eventEnd = new Date(eventStart.getTime());
此操作通常称为克隆。
关于javascript - setHours() 在应用于一个对象时更改两个对象的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22694183/