2012-10-01 115 views
0

我现在感到困惑,就像真的不解:无法从JSON获得价值存在

得到这个JavaScript对象:

{ 
    x: 0, 
    y: 0, 
    w: 28, 
    h: 25, 
    itemid: "5FE6E709096C4B57999AABC3575AF5D8", 
    moveable: true, 
    type: "4", 
    fontface: "", 
    text: "ef00704dd40e4768a1b15c14af9b6c4b.png", 
    fontsize: 0, 
    color: "", 
    opacity: "", 
    align: 0 
}​ 

,如果我做的console.log(theaboveobject); 它输出很好。

但是,如果我做console.log(object.w)或console.log(object.h)我得到0作为回应 连续2晚这已经完成了我的脑袋,现在怎么回事,什么是什么我错过了吗?

console.log(artworkLine); // this outputs fine as above 
    console.log(artworkLine.w); // says 0 
    console.log(artworkLine.h); // says 0 
+0

http://felix-kling.de/blog/2011/08/18/inspecting-variables-in-javascript-consoles/ – zerkms

+0

你可以把它放进一个jsfiddle吗? –

+0

如果您使用任何js调试器并在运行时查看实际值,该怎么办? – zerkms

回答

2

这只是一个猜测,但个人我几次经历过类似的事情。

这是由浏览器如何解析对控制台中对象的引用引起的。它是在运行时完成的,点击它展开它。而且很可能在那一刻对象已经充满了所需的数据。

更多有关细节:http://felix-kling.de/blog/2011/08/18/inspecting-variables-in-javascript-consoles/

如果您尝试JS调试器(即一个内置的Chrome开发者工具),并把对突破符合console.log(object); - 你会看到实际的对象值。

这个问题可以很容易地证明:

  1. 打开http://jsfiddle.net/8jzvd/
  2. 打开控制台
  3. 出版社的jsfiddle运行按钮
  4. 等待,直到unfold标签出现
  5. 点击Object(假设你使用谷歌铬浏览器)
  6. 你看到的对象与foo属性指定

现在重复相同的,但在第4步展开出现unfold标签之前的对象。你会看到步骤6的结果是不同的。

+0

问题是一个网页,我已经使用控制台只是为了调试对象,并且还跨过了对象,地狱控制台内我可以得到值,但如果我做console.log与代码我得到0 – davethecoder

+0

@davethecoder:你有没有试过js调试器?正如我所说 - 有可能在'console.log()'看到不是“精确”的值 – zerkms

+0

好吧,所以你的权利是骗我,不知何故 – davethecoder