我正在更新一个对象的一部分并且更新工作正常。当我在调用更新函数之前在对象上执行了console.log时,n对象已经更新。我本来希望看到旧版本对象,我知道我做的事情真的很傻。我只是想明白为什么会这样。这就是我的代码
function updateObject(o){
o.a='oneHundred';
o.b='twoHundred'
}
var obj={
a : 'one',
b : 'two',
c : {
a : '',
b : ''
}
}
console.log(obj);//outputs the updated object before I call updateObject()
var upObject = obj.c ;
updateObject(upObject);
console.log(obj);
答案 0 :(得分:3)
Chrome(可能还有firebug)实际上并不记录对象的当前状态,直到您观察它为止。如果你在代码中设置一个断点,那么:
console.log(obj);//outputs the updated object before I call updateObject()
debugger; // force breakpoint
var upObject = obj.c ;
updateObject(upObject);
console.log(obj);
然后展开对象,您将看到它是未更新的版本。最好记录您想要查看的特定属性,而不是整个对象。
答案 1 :(得分:2)
Chrome会在控制台中显示对象本身,而不会在该时间点显示对象。您可以调用stringify
来获取快照并进行记录,以便在更改对象时不会更改。
console.log(JSON.stringify(obj));