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 に答える