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