Árv*_*gép 460 javascript
将Date变量分配给另一个变量会将引用复制到SAME值.这意味着改变一个将改变另一个.我怎样才能实际克隆或复制该值?
Ste*_*son 682
使用Date对象的getTime()方法,该方法返回自1970年1月1日00:00:00(纪元时间)以来的毫秒数:
var date = new Date();
var copiedDate = new Date(date.getTime());
Run Code Online (Sandbox Code Playgroud)
在Safari 4中,您还可以编写:
var date = new Date();
var copiedDate = new Date(date);
Run Code Online (Sandbox Code Playgroud)
...但我不确定这是否适用于其他浏览器.(它似乎在IE8中工作).
Ant*_*nes 104
这是最干净的方法
let dat = new Date()
let copyOf = new Date(dat.valueOf())
console.log(dat);
console.log(copyOf);Run Code Online (Sandbox Code Playgroud)
Man*_*ngo 83
从一方面来说,克隆对象的概念Date听起来比实际情况更宏大。据我所知,\xe2\x80\x99s 只有一项实例数据,那就是存储的时间。我们\xe2\x80\x99真正做的是用相同的时间创建一个新对象。
无论过去的情况如何,new Date()构造函数肯定接受一个Date对象作为单个参数:
const date = new Date(); // With or without an argument.\nconst date2 = new Date(date); // Clone original date.\nRun Code Online (Sandbox Code Playgroud)\nhttps://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-date中步骤 4(b) 的规范表明Date对象绝对是可接受的,并且这相当于new Date(date.valueOf()),如建议的上面的一些答案。正如我所说,你\xe2\x80\x99真正所做的就是Date用与另一个对象相同的时间创建一个新对象。
您\xe2\x80\x99还会发现https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/Date上的文档已更新以包含此内容。
\n小智 24
var orig = new Date();
var copy = new Date(+orig);
Run Code Online (Sandbox Code Playgroud)
小智 15
简化版:
Date.prototype.clone = function () {
return new Date(this.getTime());
}
Run Code Online (Sandbox Code Playgroud)
小智 7
我发现这个简单的指令也有效:
dateOriginal = new Date();
cloneDate = new Date(dateOriginal);
Run Code Online (Sandbox Code Playgroud)
但我不知道它是多么"安全".在IE7和Chrome 19中成功测试过.