私は明らかにJSオブジェクトについて何かを理解していません。
function baseObject () {
var self = this;
self.value = "value";
self.nestedObject = function () {
var nest = this;
nest.value = self.value;
nest.deepNest = function() {
var deep = this;
deep.value = nest.value;
deep.selfValue = self.value;
};
};
self.nestedObject2 = {
value: self.value,
deepNest: {
value: this.value,
selfValue: self.value
}
};
}
フィドルを分解して、質問を明確にしようとします。
JS オブジェクトについての私の理解では、値で渡されている間、あるオブジェクトが別のオブジェクトと等しく設定されている場合、それらは両方とも同じ値を指す必要があるため、元のオブジェクトが更新されると、それに等しく設定されたオブジェクトは次のようになります。アップデート。
参照: Javascript ポインター/参照の狂気。誰かがこれを説明できますか?
まず、私はそれが起こるとは思っていません (そして、それが私が望んでいることです)。しかし、さらに奇妙なことに、値が十分に深くネストされている場合、ベースオブジェクトを変更すると、値が実際に NULL になることがわかります。助けてください。私は明らかに何かが欠けています。
あなたの JS エンジンが私のものとは違うことをしている場合に備えて、私のコンピューター (Chrome で実行されている Windows 7) での結果は次のとおりです。