为什么将一个对象分配给另一个变量也会改变初始对象 Javascript
Why assigning an object to another variable changing the initial object as well in Javascript
我正在尝试做 -
var a = {key1: "Value1", key2: "Value2"};
var b = a;
b.key3 = "Value3";
虽然我原以为 a
只会安慰 {key1: "Value1", key2: "Value2"}
但如果我这样做 console.log(a)
以下是结果 -
{key1: "Value1", key2: "Value2", key3: "Value3"}
目前我设法使用 ES6
Object.assign
方法让它工作,比如 -
var a = {key1: "Value1", key2: "Value2"};
var b = Object.assign({}, a);
b.key3 = "Value3";
console.log(a); // {key1: "Value1", key2: "Value2"}
但我很想知道 JavaScript 中的原因。
仅供参考 - 我尝试 search/google 但无法找到,因为我不知道要遵循的确切阶段。
通过var b = a;
,它只是对同一对象进行了另一个引用,可以通过 a 和 b 访问该对象。
Object.assign()方法用于将所有可枚举自身属性的值从一个(或多个)对象复制到另一个对象。
var o1 = { a: 1 };
var o2 = { b: 2 };
var o3 = { c: 3 };
var obj = Object.assign(o1, o2, o3);
console.log(obj); // { a: 1, b: 2, c: 3 }
console.log(o1); // { a: 1, b: 2, c: 3 }, target object itself is changed.
我正在尝试做 -
var a = {key1: "Value1", key2: "Value2"};
var b = a;
b.key3 = "Value3";
虽然我原以为 a
只会安慰 {key1: "Value1", key2: "Value2"}
但如果我这样做 console.log(a)
以下是结果 -
{key1: "Value1", key2: "Value2", key3: "Value3"}
目前我设法使用 ES6
Object.assign
方法让它工作,比如 -
var a = {key1: "Value1", key2: "Value2"};
var b = Object.assign({}, a);
b.key3 = "Value3";
console.log(a); // {key1: "Value1", key2: "Value2"}
但我很想知道 JavaScript 中的原因。
仅供参考 - 我尝试 search/google 但无法找到,因为我不知道要遵循的确切阶段。
通过var b = a;
,它只是对同一对象进行了另一个引用,可以通过 a 和 b 访问该对象。
Object.assign()方法用于将所有可枚举自身属性的值从一个(或多个)对象复制到另一个对象。
var o1 = { a: 1 };
var o2 = { b: 2 };
var o3 = { c: 3 };
var obj = Object.assign(o1, o2, o3);
console.log(obj); // { a: 1, b: 2, c: 3 }
console.log(o1); // { a: 1, b: 2, c: 3 }, target object itself is changed.