0

可能重复:
JavaScript 是按引用传递还是按值传递语言?

在这个文件中,我有一个对象 this.objectA 和 this.allAs;this.objectA 包含一些属性。每次我得到一个新的 this.objectA 时,我都会将它添加到数组 this.allAs 中。当我得到一个新的时,我总是重新分配 this.objectA。

后来我检查了我的数组this.allAs,我发现它正确地存储了不同的this.objectA。为什么 this.objectA 被覆盖,this.allAs 中的对象没有被覆盖?(我希望所有这些存储的对象都指向同一个this.objectA,但事实并非如此)Javascript是按值传递对象???

4

1 回答 1

0

你必须更具体地了解你在做什么。JavaScript 通过引用传递,但是如果您将本地副本保存在任何地方,并从 return 语句中复制这些值,那么您就不再从引用中工作了——它们不再是指向完全相同的对象的指针,必然。

这里有一些东西来演示传递引用:

Bob = { name : "Bob", age : 32 };
function giveBobTo (obj, bobject) { obj.bob = bobject; }

Billy = {};
Jim = {};

giveBobTo(Billy, Bob);
giveBobTo(Jim, Bob);

Jim.bob.cars_on_lawn = 8;
Billy.bob.cars_on_lawn;  // 8;
Bob.cars_on_lawn;        // 8;

console.log( "Billy-Bob equals Jim-Bob equals Bob:",
             Billy.bob === Jim.bob === Bob); // true
于 2012-07-23T04:10:37.367 回答