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

Javascript 为什么当我将一个存储在变量中的对象分配给另一个变量时,当我更改一个变量时,这两个变量都会更改?,javascript,Javascript,所以我试着这么做: var obj1={test:0}; var obj2=obj1; obj2.测试=2; 控制台日志(obj1、obj2)对象是通过引用分配的,因此如果需要复制,请使用对象.assign() e、 g var obj1={test:0}; var obj2=Object.assign({},obj1); obj1.test=1; console.log(obj2.test); //使用ES6 让object1={test:0}; 让object2={…object1} o

所以我试着这么做:

var obj1={test:0};
var obj2=obj1;
obj2.测试=2;

控制台日志(obj1、obj2)对象是通过引用分配的,因此如果需要复制,请使用
对象.assign()

e、 g

var obj1={test:0};
var obj2=Object.assign({},obj1);
obj1.test=1;
console.log(obj2.test);
//使用ES6
让object1={test:0};
让object2={…object1}
object1.test=2;
console.log(object2.test);
Object.assign()方法用于将所有可枚举自身属性的值从一个或多个源对象复制到目标对象。它将返回目标对象

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

控制台日志(obj1、obj2)这是对象的行为方式。除非显式创建一个新变量,否则两个变量都包含对同一对象的引用。对象在javascript中是可变的。所以你需要克隆它。有很多方法可以实现:
JSON.parse(JSON.stringify(obj1))
Object.assign
为什么在空对象上使用扩展语法?谢谢@Li357。这是一个错误。修复了
对象。分配
也是ES6。