为什么这样做? Javascript中的对象引用

时间:2011-06-09 16:38:56

标签: javascript

我终于好奇地发现为什么javascript会运用它的巫术魔法来了解为什么不能创建所有对象引用。

举个例子:

var a, b, c, d;
a = 100; b = a;

c = {}; d = c;

b = 10; d.e = 'f';

console.log(a, b); // outputs 100, 10
console.log(c, d); // outputs object => e = 'f', object => e = 'f'

如果javascript中的所有变量都是对象,那么cd的用例明确表示为Object与定义a和{{ 1}}为b?或者,为什么Numberc会相互关联,而不是da

3 个答案:

答案 0 :(得分:8)

JavaScript中的所有变量都不是对象。也有原生类型。

cd 未相互链接。它们指向同一个对象引用。如果您要将d重新分配给其他内容,则不会影响c

var c = {};
var d = c;
d = { foo: "bar" };

c === d // false

但是,如果您要修改cd引用的对象,它将修改同一个对象,因为cd都指的是与你的例子中的对象相同。

答案 1 :(得分:3)

我认为不同之处在于b,您将变量重新分配给新的对象/值,而使用d时,您< em>修改现有对象。

答案 2 :(得分:2)

分配给a的{​​{1}}的值是一个数字。从bc分配的值是对象的引用。

d