2

jsスクリプトの奇妙な振る舞いに関して、私はすでにかなり長い間頭を悩ませています。値をコンソールに出力しd.parent.xて、異なる値を表示する場合とは、をコンソールに出力してコンソールからd.parent値を参照する場合とは異なります。

スクリーンショットでは、オブジェクト自体の値xが525.5であるのに対し、d.parent.xの出力では148が得られます。

これがjsの動作なのか、使用されているD3.jsの動作なのかわかりません。

そのためのjsfiddleを作成しました(sourceresult)。ChromeまたはSafariでコンソールを開くと、スクリーンショットのように出力が表示されます。

コンソールのスクリーンショット

4

1 に答える 1

2

これはconsole.logの既知の問題です。これは参照ベースであり、基本的に、オブジェクトをログに記録するときに結果をキャッシュする場合があります。

それを回避するために通常は行うことができますが、console.log(JSON.stringify(d.parent))循環参照のため、これはあなたの場合には機能しません。スクリプトにブレークポイントを設定して、とを確認しましd.parentd.parent.x

ここに画像の説明を入力してください

console.log(d.parent.x)実際、元のコードに表示される値と同じ値になります。

于 2012-09-23T20:05:34.453 に答える