0

あなたがこのオブジェクトを持っているとしましょう:

mainObj = {
   foo1: 'bar1',
   foo2: 'bar2',
   foo3: 'bar3'
}

ここで、を実行してこのオブジェクトを閉じたいと思いますcloneObj = mainOb。これで、2つの同一のオブジェクトができました。

mainObj.foo1 = 'lolcats' クローンを作成した後での値を変更すると、何らかの理由でcloneObj.foo1 = 'lolcats'

私はこれをChromeのコンソールではるかに複雑なオブジェクトでテストしました。私のスクリプトには、2つのオブジェクトを同期させ続けるものは何もないことは確かです。cloneObjのランダムな名前を作成することで、これを確認しました。

この動作は意図的に行われていますか、それとも何らかのバグが発生していますか?それとも、ここで非常に基本的なものが欠けているだけですか?

4

2 に答える 2

3

を行ったときに最初のオブジェクトを複製しませんでした。実際には、変数名を介してアクセスできるcloneObj = mainOb参照を渡しています。したがって、同じオブジェクトを参照する 2 つの変数名があります。mainObcloneObj

于 2012-07-31T22:02:20.877 に答える
2

cloneObj = mainOb同じオブジェクトへの別の参照を作成するなど、オブジェクトを割り当て/複製する場合。とは両方とも同じオブジェクトmainObcloneOb指しているため、一方の変更はもう一方に反映されます。

于 2012-07-31T22:01:24.827 に答える