首页 > 解决方案 > 更新对象副本更新原始

问题描述

我有一个与 javascript 中的对象有关的问题。我实际上需要将原始变量值的值放在一个临时变量中,以便稍后我可以参考它来执行业务逻辑。

问题是每当我修改原始变量值时,临时变量也会更新

将值放入临时变量中

这里 this.startingTime = 10:00

而 this.endingTime = 12:00

this.startingTime = new Date(this.selectedAvailability.scheduleDate + ' ' + this.selectedAvailability.startTime);
this.endingTime = new Date(this.selectedAvailability.scheduleDate + ' ' + this.selectedAvailability.endTime);

this.tempStartTime = this.startingTime;
this.tempEndingTime = this.endingTime;

更新如下更新原始和临时

this.endingTime = 11:30

this.tempEndingTime = 11:30(临时变量也得到更新,但这里我想要的是临时保持 12:00)

this.endingTime.setMinutes(this.endingTime.getMinutes() - 30);

标签: javascriptangular

解决方案


通过这样做,您将第一个变量的引用提供给临时变量,这就是它们一起更新的原因。

为了防止它,您应该使用类似object.assigncloneDeep(这个是来自lodash)的东西来创建一个新的引用。


推荐阅读