0

我现在很困惑,就像真的很困惑:

得到了这个 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) 我连续 2 晚得到 0 作为响应,这已经让我头疼了,发生了什么事,我错过了什么?

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

1 回答 1

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(假设您使用 google chrome 浏览器)
  6. 您会看到具有foo指定属性的对象

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

于 2012-10-01T22:50:24.650 回答