【发布时间】:2016-07-15 16:05:57
【问题描述】:
var x = {'a': 't1', 'b': 't2', 'c': 't3'};
var y = x;
delete (y['c']);
console.log(x);
预期输出:
Object {a: "t1", b: "t2", c: "t3"}
输出:
Object {a: "t1", b: "t2"}
删除对象 y 的属性会改变对象 x 有什么原因吗?
【问题讨论】:
-
对象由
reference而不是value传递。这两个变量都指向相同的内存位置,因此如果它们中的任何一个发生变化,最终都会改变对象.. -
因为是完全相同的对象实例。
-
@RayonDabre 那么如果我想要一个没有键 c 且不影响对象 x 的对象 y,我该怎么做呢?
-
您有很多选择可以实现这一目标。只需搜索
Deep copy of objects in JavaScript -
结账我。我的回答link
标签: javascript