2014-07-05 79 views
0

为什么当我将一个变量赋给一个对象并对该变量进行更改时,它也改变了这些对象?例如:Javascript - [为什么?]为一个对象指定一个变量

c = 26; 
a = b = c; 
a += 1; 

a  // 27 
b  // 26 
c  // 26 

z = {}; 
x = y = z; 
x.ab = 5; 

x  // Object {ab: 5} 
y  // Object {ab: 5} 
z  // Object {ab: 5} 

为什么(在上面的例子中)不y.abz.ab存在吗?我只修改了x而不是yz。在第一个例子中(与整数)如何,当我改变的值a,bc不受影响?

+0

可变性是这里的关键字。 – thefourtheye

+1

不是JS专家,但Java的解释是你不是在处理对象,而是在处理对象的引用,所以'x''y'和'z'都指向已经创建的唯一对象 – SJuan76

+0

Short回答:因为a,b和c引用一个不可变的标量值,而x,y和z引用一个可变对象。 –

回答

2

当您将一个对象分配给一个变量时,它只会引用原始对象,而不会创建副本。所以所有的变量都指向同一个对象。

相关问题