0

タイトルがおかしくなるかもしれませんが、私は JavaScript の初心者なので、この状況をどのように説明したらよいかわかりません。

コードは次のとおりです。

a={};
var b=a;
b['a']='x';
console.log(a);

結果は次のようになります。

Object { a="x"}

「x」を変数 b のみに設定したため、空のオブジェクトである必要はありませんか?

4

2 に答える 2

7

a次のように、オブジェクトへの参照が含まれています。

+-----+ +--------------+
| | |------>| (オブジェクト) |
+-----+ +--------------+

だからあなたがするとき:

var b = a;

これで、同じオブジェクトを参照する 2 つの変数ができました。

+-----+
| | |---+
+-----+ | +-------------+
          +--->| (オブジェクト) |
+-----+ | +-------------+
| | b |---+
+-----+

したがって、当然のことながら、そのオブジェクトに加えた変更 (あなたの場合はそれにプロパティを追加すること) は、どちらの参照からも見ることができます。

于 2013-09-12T16:52:16.717 に答える
0

bへの参照でaあるため、これは正常な動作です。それを避けるには、クローンを作成する必要があります。たとえば、jQuery フレームワークを使用すると、次のように簡単に実行できます。var b = $.extend(true, {}, a};

于 2013-09-12T16:53:06.907 に答える