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 に答える