无法从存在的json获得价值

时间:2012-10-01 22:34:58

标签: javascript 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

1 个答案:

答案 0 :(得分: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属性的对象
  7. 现在重复相同的步骤,但在第4步展开 unfold标签前的对象。你会发现步骤6的结果是不同的。