影响其父变量的变量

时间:2013-09-12 16:50:03

标签: javascript

标题可能看起来很奇怪, 但我真的不知道如何描述这种情况,因为我是JavaScript的初学者。

以下是代码:

a={};
var b=a;
b['a']='x';
console.log(a);

结果将是:

Object { a="x"}

不应该是空白对象,因为我只将'x'设置为变量b?

2 个答案:

答案 0 :(得分:7)

a包含对象的引用,如下所示:

+-----+        +--------------+
|  a  |------->| (the object) |
+-----+        +--------------+

所以当你这样做时:

var b = a;

现在您有两个变量引用 相同的 对象。

+-----+
|  a  |---+
+-----+   |    +--------------+
          +--->| (the object) |
+-----+   |    +--------------+
|  b  |---+
+-----+

很自然地,您对该对象所做的任何更改(在您的情况下为其添加属性)都可以通过引用显示。

答案 1 :(得分:0)

b是对a的引用,因此这是正常行为。为了避免这种情况,你需要进行克隆。例如,使用jQuery框架可以很简单:var b = $.extend(true, {}, a};