Vuejs2 Vue2变量的意外行为

Vuejs2 Vue2变量的意外行为,vuejs2,Vuejs2,我对Vue2变量有一些问题 我的目标是创建从Axios调用中提取的变量的备份,然后使用该备份将主变量重置回原始值。主变量称为loaded_data,副本称为original_data 我的问题是,当我复制变量时,它是通过引用传递的,而不是值。因此,当我更新我的加载的\u数据变量时,原始\u数据 变量的定义方式: data() { return { loaded_data: false, original_data: false, }; }, 变量的设置方

我对Vue2变量有一些问题

我的目标是创建从Axios调用中提取的变量的备份,然后使用该备份将主变量重置回原始值。主变量称为
loaded_data
,副本称为
original_data

我的问题是,当我复制变量时,它是通过引用传递的,而不是值。因此,当我更新我的
加载的\u数据
变量时,
原始\u数据

变量的定义方式:

data() {
    return {
      loaded_data: false,
      original_data: false,
    };
},
变量的设置方式:

this.loaded_data = axios_response.response.data;
this.original_data = axios_response.response.data;
重置数据功能

reset_data() {
    console.log('ORIGINAL', this.original_data);
    console.log('LOADED', this.loaded_data);

    this.loaded_data = this.original_data;
},
ORIGINAL {__ob__: Observer}
value: "this is an update to the data"

LOADED {__ob__: Observer}
value: "this is an update to the data"
因此,当我更新
加载的\u数据时
变量。例如:

loaded_data.value = 'this is an update to the data';
它还更新了原始的_数据变量。如果我运行
reset\u data()
函数,控制台日志如下所示

reset_data() {
    console.log('ORIGINAL', this.original_data);
    console.log('LOADED', this.loaded_data);

    this.loaded_data = this.original_data;
},
ORIGINAL {__ob__: Observer}
value: "this is an update to the data"

LOADED {__ob__: Observer}
value: "this is an update to the data"
它应该是什么样子的:

ORIGINAL {__ob__: Observer}
value: ""

LOADED {__ob__: Observer}
value: "this is an update to the data"
它没有真正意义,因为
已加载的\u数据
原始\u数据
没有链接到
重置\u数据
功能旁边,并使用
axios\u响应设置它


任何帮助或想法都会非常有用。

JavaScript将同一对象复制到两个变量中。您需要对象的第二个副本作为
原始\u数据
。一种方法是使用

this.original_data = JSON.parse(JSON.stringify(axios_response.response.data));
在你得到数据之后