2012-10-01 144 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