为什么当我将存储在变量中的对象分配给另一个变量时,当我更改一个变量时,这两个变化

时间:2018-05-13 18:24:36

标签: javascript

所以我试图这样做:

    var obj1 = {test:0};
    var obj2 = obj1;
    obj2.test= 2;
    console.log(obj1,obj2);

我希望返回

  

{test:0} {test:2}

但是返回了这个

  

{test:2} {test:2}

这是一个错误还是对象的行为方式?

2 个答案:

答案 0 :(得分:0)

通过引用分配对象,因此如果您需要使用Object.assign()

进行复制

e.g。



var obj1 = {test:0};
var obj2 = Object.assign({}, obj1);

obj1.test = 1;
console.log(obj2.test);
// Using ES6
let object1 = { test: 0 };
let object2 = { ...object1 }
object1.test = 2;
console.log(object2.test);
 




答案 1 :(得分:0)

Object.assign()方法用于将所有可枚举的自有属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。

complete

source