这会复制对象还是添加对它的引用?

时间:2011-09-27 23:48:35

标签: javascript reference

假设我有以下对象:

var lol = {
    section: {},
    other: {foo: 'bar', foob: 'baz'}
};

现在,如果我执行以下操作:

lol.section.other = lol.other;

是否会引用section.otherother或将整个other对象复制并放入section

3 个答案:

答案 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/