タイトルがおかしくなるかもしれませんが、私は JavaScript の初心者なので、この状況をどのように説明したらよいかわかりません。
コードは次のとおりです。
a={};
var b=a;
b['a']='x';
console.log(a);
結果は次のようになります。
Object { a="x"}
「x」を変数 b のみに設定したため、空のオブジェクトである必要はありませんか?
タイトルがおかしくなるかもしれませんが、私は JavaScript の初心者なので、この状況をどのように説明したらよいかわかりません。
コードは次のとおりです。
a={};
var b=a;
b['a']='x';
console.log(a);
結果は次のようになります。
Object { a="x"}
「x」を変数 b のみに設定したため、空のオブジェクトである必要はありませんか?
a
次のように、オブジェクトへの参照が含まれています。
+-----+ +--------------+ | | |------>| (オブジェクト) | +-----+ +--------------+
だからあなたがするとき:
var b = a;
これで、同じオブジェクトを参照する 2 つの変数ができました。
+-----+ | | |---+ +-----+ | +-------------+ +--->| (オブジェクト) | +-----+ | +-------------+ | | b |---+ +-----+
したがって、当然のことながら、そのオブジェクトに加えた変更 (あなたの場合はそれにプロパティを追加すること) は、どちらの参照からも見ることができます。
b
への参照でa
あるため、これは正常な動作です。それを避けるには、クローンを作成する必要があります。たとえば、jQuery フレームワークを使用すると、次のように簡単に実行できます。var b = $.extend(true, {}, a};