Javascript'添加到数组中的s对象是通过值或引用传递的

Javascript's objects added to array is pass by value or reference?

本文关键字:引用 对象 添加 数组 Javascript      更新时间:2024-01-14

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

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

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

您必须更加具体地了解您正在做的事情。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