2011-11-27 6 views
6

私は怒っているかもしれないと思います。同じオブジェクトプロパティの矛盾した値を表示するconsole.log()

私はconsole.log()を使ってオブジェクトの状態を見て、次の行で同じオブジェクトの特定のプロパティに対してconsole.log()を実行し、それぞれ異なる値を取得します。

私が使用しているコードは次のとおりです。

console.log(this.pictures.Items[pic].val); 

for(var i in this.pictures.Items[pic].val) { 
    console.log("property: %s, value: %s", i, this.pictures.Items[pic].val[i]); 
} 

と放火魔出力:

Picture { isLoaded=true, isSelected=false, img_src="imgs/image1.jpg", more...} 

property: isLoaded, value: false 
...more properties 

あなたが見ることができるよう、「isLoaded」ログイン時にオブジェクトそのものではなく、偽のログイン時に真でありますプロパティ。

念のためにオブジェクトを再度ログに記録しようとしましたが、それは再び真です。

ここで何が起こっているか知っていますか?

おかげ

リッチ

+0

http://jsfiddle.net/xmvUR/ ...コードの実際の場所がわかりません。しかし、JavaScriptにはこのようなバグはありません。 –

答えて

2

これはあなたかどうかに何が起こっているかである場合、私は完全にわからないんだけど、console.log()は値上console.log()をしているか、使用して一部のブラウザではいくつかの問題を持っているようです配列内で変化しているか反復されているインデックス変数が、常に正しく動作するとは限りません。

私の推測では、プロセス境界間のマーシャリングと、実際のオブジェクトまたはインデックスが使用または参照されるまでの間、ロギング式の実際の評価が遅れてしまうことがあります。私はこの問題をChromeで見たことがあります.Firefoxについてはわかりません。

この特定の問題を回避するには、文字列演算を使用して最終的な文字列を作成する必要があります。最後の文字列のみがすべてが完全に評価されたconsole.log()に渡された場合、この問題は出力に影響しません。