根据MDN ,我们只能将以下类型的参数传递给 Date
构造函数:
new Date();
new Date(value); // Unix timestamp
new Date(dateString);
new Date(year, monthIndex [, day [, hours [, minutes [, seconds [, milliseconds]]]]]);
因此从技术上讲,我们无法将另一个 Date
实例传递给 Date
构造函数。
但是,以下内容在 Firefox 和 Chrome 中运行良好:
new Date(new Date(1990, 1, 1));
为什么它有效?这是克隆 Date
对象的正确方法吗?
最佳答案
根据ECMAScript specification ,第9版(2018年6月起)
If
Type(value)
isObject
andvalue
has a[[DateValue]]
internal slot, then Lettv
bethisTimeValue(value)
.
因此,您观察到的行为是一个标准(而不是一些实验),并且应该由所有现代浏览器实现。
关于javascript - 将 Date 实例传递给 Date 构造函数以克隆 Dates,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57482826/