可能重复:
Is JavaScript a pass-by-reference or pass-by-value language?
在这个文件中我有一个对象this.objectA和this.allAs; this.objectA包含一些属性。 每次我得到一个新的this.objectA,我将它添加到数组this.allAs。 当我得到一个新的时候,我总是重新分配this.objectA。
稍后我检查我的数组this.allAs,我发现它正确存储了不同的this.objectA。 为什么this.objectA会被覆盖,this.all内的对象没有被覆盖? (我希望所有那些存储的对象指向相同的this.objectA,但它没有)Javascript是通过对象的值传递???
答案 0 :(得分:0)
你必须对你正在做的事情有更具体的了解。 JavaScript通过引用传递,但如果您将本地副本保存在任何地方,并从返回语句中复制这些值,那么您将不再使用引用 - 它们不再是指向完全相同的对象的指针。
这是展示传递参考的东西:
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