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

buz*_*ord 6 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'
Run Code Online (Sandbox Code Playgroud)

如果在JavaScript中所有变量都是对象,那么是什么让用例cd显式转换为一个Object如此不同不是定义ab作为Number?或者,为什么会cd彼此联系,而不是ab

Anu*_*rag 8

JavaScript中的所有变量都不是对象.也有本地类型.

cd没有链接到彼此.它们指向同一个对象引用.如果您要重新分配d其他内容,则不会影响c.

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

c === d // false
Run Code Online (Sandbox Code Playgroud)

但是,如果你要修改的对象被引用c或者d,它会修改同一个对象,因为cd都指的是同一个对象在你的榜样.