0

我正在使用 JavaScript。我有一个对象。然后我将该对象放在我初始化的数组中。然后我对该数组和其中的值做一些工作。我希望知道,通过更改数组中的对象,我是否也在更改实际对象本身?代码如下。

function doStuff() {
    var node = getNode(); //getNode() returns a node object
    var queue = [node]; //This is the line my question is about

    while(queue.length > 0) {
        //Add data to queue[0]. Add queue[0]'s children to queue, remove queue[0]
    }

    return node;
};

那么,当 while 循环结束时,节点会指向更改的对象,还是仅保存对象放入队列之前的副本?

感谢您的帮助,非常感谢!

4

3 回答 3

1

Javascript 中的对象总是通过引用分配,它们永远不会自动复制。

于 2013-07-24T08:34:24.410 回答
0

我有一个对象。然后我将该对象放在我初始化的数组中。

不,你没有。“对象”不是 JavaScript 中的值。您有一个引用(指向对象的指针)。你把它放在数组里面。node是一个参考queue是一个参考getNode()返回一个参考。一旦你意识到这一点,它就变得简单了。

于 2013-07-24T19:19:12.303 回答
0

你可以自己检查一下:

var obj = {a: 1, b: 1};
var arr = [obj];
arr[0].a = 0;
alert(obj.a) // Result: 0;

http://jsfiddle.net/pnMxQ/

于 2013-07-24T08:35:16.823 回答