为了账号安全,请及时绑定邮箱和手机立即绑定

更改副本(日期变量)的值也会更改原始(JS)的值

更改副本(日期变量)的值也会更改原始(JS)的值

30秒到达战场 2022-06-16 10:22:37
我有一个日期变量,我想以此为基础使用它: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 相同?我希望这不是重复的,我只找到了其他语言的关于这个问题的帖子。
查看完整描述

1 回答

?
慕标琳琳

TA贡献1830条经验 获得超9个赞

请注意:

var Uhrzeit = new Date();创建一个新的日期实例,它是一个对象。

在您分配的那一刻var u = Uhrzeit,javascript 中的 this 意味着 u 指的是所指的同一个日期对象Uhrzeit

因此,对象的变量将引用保存在存储对象的内存中。通过分配一个引用对象的变量,只需将该引用传递给新变量。

当您更改其中一个uUhrzeit它们都引用同一个对象时,它们都更改了同一个对象。

你必须这样做:

var u = new Date(Uhrzeit);这将创建u的值Uhrzeit。但是它们现在都将引用内存中的不同对象。


查看完整回答
反对 回复 2022-06-16
  • 1 回答
  • 0 关注
  • 96 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信