javascript - setHours() 在应用于一个对象时更改两个对象的日期

标签 javascript

我有一个 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/

相关文章:

javascript - 如何在 Angular 应用程序中显示或隐藏某些页面的标题?

javascript - 尝试设置超时来显示和隐藏球

javascript - move.js javascript:以设定的间隔重复动画

javascript - FullCalendar 4.1 和调用刷新事件

javascript - 为 youtube 搜索生成一个 url

Javascript - 动态 .filter() - Json 文件

javascript - 如何使用 jQuery 启用禁用字段?

javascript - Jquery 不会选择给定 ID 的表单元素

javascript - 如何在 Selenium 或 Javascript 中模拟 mouseenter 事件?

javascript - 如何使用变量制作 firebase 过滤器?