假设我有以下对象:
var lol = {
section: {},
other: {foo: 'bar', foob: 'baz'}
};
现在,如果我执行以下操作:
lol.section.other = lol.other;
是否会引用section.other
与other
或将整个other
对象复制并放入section
?
答案 0 :(得分:8)
您正在创建对同一对象的两个引用。
Javascript对象从不隐式复制。
答案 1 :(得分:2)
与其他一些OO语言一样,JavaScript也会通过引用传递和分配对象,因此,您只是创建对现有对象的新引用。
JavaScript脱离其他OO语言的地方在于继承和封装。所以在这些方面要谨慎。
答案 2 :(得分:1)
正如SLaks所说,javascript将对象指定为引用(不复制)。这很容易测试或看到自己:
var lol = {
section: {},
other: {foo: 'bar', foob: 'baz'}
};
lol.section.other = lol.other;
lol.other.foo = 'test';
console.log(lol.section.other.foo); // will be 'test', not 'bar'
您可以在此处查看:http://jsfiddle.net/jfriend00/r73LH/。