为什么在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中出现这种情况的原因。
仅供参考-我试着搜索/谷歌,但找不到,因为我不知道接下来的确切阶段。
通过执行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.
相关文章:
- 如何在HTML中显示服务器对象变量
- 在Javascript中重新分配对象变量时,原始对象会发生什么
- Javascript 方法看不到对象变量
- JavaScript对象范围-在对象方法中使用对象变量
- 将对象(变量)传递给angularjs指令
- 对象变量在 JavaScript 中是不可访问的
- 无法访问公共JavaScript对象变量
- 可以't获取具有“t”的对象变量;这个“;由setTimeout()函数调用的对象函数中的属性
- Javascript:如何在回调中设置父对象变量
- 从方法内部设置对象变量
- 访问对象中的对象变量
- JavaScript 中的对象变量
- 从 json 代码中删除 javascript 对象变量名称文本
- 将变量传递到对象变量中
- JavaScript 如何重新识别事件对象变量
- 从对象变量中获取子节点
- 使对象变量在所有“更深”的范围内都是可访问的
- 从方法 JavaScript 访问对象变量
- 如何在 javascript 中保存对象变量的状态
- 无法访问IE和Mozilla中javascript的类对象变量