我正在尝试 -
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的原因。
仅供参考 - 我试图搜索/谷歌但无法找到,因为我不知道要遵循的确切阶段。
答案 0 :(得分:2)
通过执行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.