这段 JavaScript 代码...
var o = {};
console.dir(o);
o.foo = "bar";
console.dir(o);
...results in the same interactive tree output shown twice:
This issue is discussed as a bug here on Stack Overflow, logged as a Chromium bug and WebKit (and I imagine elsewhere).
我理解这种情况的实现原因,但它使调试有状态对象变得困难(不使用交互式调试器)。在这种情况下,您需要查看每个日志调用中对象的不同状态,您使用什么策略进行日志记录?JSON.stringify()
?是否有可以使用的序列化控制台方法?
我将通过对您正在记录的内容进行“深层复制”并将该副本传递给 console.dir() 来解决这个问题。像这样的东西效果很好:
function deep_copy(ref)
{
var r;
var i;
if(isHash(ref))
{
r = {};
for(i in ref)
r[i] = deep_copy(ref[i]);
}
else if(isArray(ref))
{
r = [];
for(i = 0; i < ref.length; i++)
r[i] = deep_copy(ref[i]);
}
else
{
r = ref;
}
return r;
}
如果你不想为这样的事情烦恼,那么使用JSON.stringify
是一个很好的解决方法,如果它是浏览器本地的,速度也不会慢很多。
console.dir(JSON.parse(JSON.stringify(o));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)