标题可能看起来很奇怪, 但我真的不知道如何描述这种情况,因为我是JavaScript的初学者。
以下是代码:
a={};
var b=a;
b['a']='x';
console.log(a);
结果将是:
Object { a="x"}
不应该是空白对象,因为我只将'x'设置为变量b?
答案 0 :(得分:7)
a
包含对象的引用,如下所示:
+-----+ +--------------+ | a |------->| (the object) | +-----+ +--------------+
所以当你这样做时:
var b = a;
现在您有两个变量引用 相同的 对象。
+-----+ | a |---+ +-----+ | +--------------+ +--->| (the object) | +-----+ | +--------------+ | b |---+ +-----+
很自然地,您对该对象所做的任何更改(在您的情况下为其添加属性)都可以通过引用显示。
答案 1 :(得分:0)
b
是对a
的引用,因此这是正常行为。为了避免这种情况,你需要进行克隆。例如,使用jQuery框架可以很简单:var b = $.extend(true, {}, a};