Pet*_*ris 9 javascript firebug google-chrome-devtools
我有理由相信console.log并且JSON.stringify可以产生相同对象的不一致视图,即使它是以直接的方式创建的(参见注释).
情况
在谷歌浏览器开发者工具和Firebug的,我有一个对象obj,其console.log打印出来{ players: {0: ...}, ...},而JSON.stringify报道{ players: {}, ...}.obj.players是{}在这两种功能,所以它似乎console.log是罪魁祸首.它可能在某种程度上是异步/非确定性的吗?
补充说明
我担心我无法提供更多的上下文,因为代码很长而且对于客户来说,但我可以尝试,如果有一些东西可以帮助深究这一点.目前,我被迫远离console.log检查.
知道通过手动设置属性仅仅从对象文字形成对象可能是有用的,例如,obj.players = {}; obj.players[0] = ....
码
我的意思的样本可以在http://jsfiddle.net/9dcJP/上观察到.
Seb*_*ner 13
你为什么不用它console.dir(obj)呢?或者使用console.log(obj)然后点击输出/展开它?
当我尝试以下代码时:
var obj = {};
obj.players = {};
obj.players[0] = {color: "green"};
obj.players[1] = {color: "blue"};
obj.world = "xyz";
console.log(JSON.stringify(obj));
Run Code Online (Sandbox Code Playgroud)
我总是(Firefox,Chrome,Opera)得到这个作为输出:
{"players":{"0":{"color":"green"},"1":{"color":"blue"}},"world":"xyz"}
Run Code Online (Sandbox Code Playgroud)
此外,您的players对象看起来实际上是一个数组.所以你应该更好地创建它.
更新:
我刚刚看到你添加了一个JSFIDDLE演示的链接,它players在记录后立即清空对象.据我所知,所有的Web开发工具使用某种异步屏,这会导致一个空players当使用对象console.log(obj)或console.dir(obj).因此,Firebug通过正确显示对象来提供最佳效果console.dir(obj).
| 归档时间: |
|
| 查看次数: |
28976 次 |
| 最近记录: |