为什么将一个对象分配给另一个变量也会改变初始对象 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.