更新对象副本更新原始

时间:2020-07-19 17:26:01

标签: javascript angular

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

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

将值放入临时变量

在这里this.startingTime = 10:00

and 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(temp变量也被更新,但是我想要的是保持12:00的温度)

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

2 个答案:

答案 0 :(得分:0)

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

为防止这种情况,您应该使用object.assigncloneDeep之类的东西(该名字来自lodash)来创建新引用。

答案 1 :(得分:-1)

this.tempStartTime = angular.copy(this.startingTime);

this.tempEndingTime = angular.copy(this.endingTime);

尝试这个