我有一个日期变量,希望以此为基础来使用它:
var Uhrzeit = new Date();
现在,我想将此基础复制到一个新变量中以使用它,为此,我刚刚创建了一个新变量并为其分配了第一个变量的值。
var u = Uhrzeit
我有这个小代码段:
var Uhrzeit = new Date();
Uhrzeit.setMinutes(0);
Uhrzeit.setSeconds(0);
console.log("Uhrzeit: " + Uhrzeit);
Uhrzeit.setSeconds(61);
console.log("Uhrzeit: " + Uhrzeit)
var u = Uhrzeit;
console.log("u: " + u);
u.setSeconds(200);
console.log("u: " + u);
console.log("Uhrzeit: " + Uhrzeit)
它生成以下输出:
Uhrzeit: Sun Apr 05 2020 15:00:00 GMT+0200 (Mitteleuropäische Sommerzeit)
Uhrzeit: Sun Apr 05 2020 15:01:01 GMT+0200 (Mitteleuropäische Sommerzeit)
u: Sun Apr 05 2020 15:01:01 GMT+0200 (Mitteleuropäische Sommerzeit)'
u: Sun Apr 05 2020 15:04:20 GMT+0200 (Mitteleuropäische Sommerzeit)
Uhrzeit: Sun Apr 05 2020 15:04:20 GMT+0200 (Mitteleuropäische Sommerzeit)
现在存在以下问题:最后,u的值为4 Min和20Sec。 Uhrzeit具有相同的值,应该具有1Min和1Sec的值。更改u的值时,为什么Uhrzeit与u具有相同的值?
我希望这不是重复的,我只用其他语言找到了有关此问题的帖子。
答案 0 :(得分:0)
var Uhrzeit = new Date();
创建一个新的Date Instance,它是一个对象。
在分配var u = Uhrzeit
的那一刻,在javascript中,这意味着u引用的日期与Uhrzeit
引用的对象相同。
因此,对象的变量将引用保存在存储对象的内存中。通过分配引用对象的变量,只需将引用传递给新变量即可。
更改u
或Uhrzeit
时,它们都引用相同的对象,并且都更改相同的对象。
您必须改为这样做:
var u = new Date(Uhrzeit);
,这将创建值为u
的{{1}}。但是它们现在都将引用内存中的不同对象。