2

例:

var o = {
a: 12,
gg: {
    mm: {
        a: 15
    }
}
}
console.log(o, _.copy(o))
o.gg.mm.a = 44

この場合、開発ツールでは、「o」が2回出力され、o.gg.mm.aの値が異なります。

最初のものでは、値は44です

2番目の値は15です-jqueryコピー関数またはアンダースコアクローン関数のおかげです

はるかに複雑なバックボーンモデルを印刷する場合、間違った参照、つまり15ではなく44を指すオブジェクトを常に印刷します(クローン/コピーが使用されているかどうかに関係なく)

これらのプロパティを表示するためのいくつかのオプションがありますが(バックボーンモデルでも)、それらはすべてひどいものです。

  • ネストされたプロパティを処理するには、既知の制限、つまりclone / copy/extendのラッパーを使用します
  • 特定のプロパティをコピー/クローン/拡張して、ネストされたオブジェクト、つまりconsole.log(_。copy(o.gg.mm))にアクセスします
  • 値に対してconsole.logを直接使用する、つまりconsole.log(o.gg.mm.a)を使用して正しい値を取得する
  • デバッガーを起動し、値を調べます

もっと簡単なものはありますか?console.logが誤読で私をだまさずにオブジェクトとそのプロパティを表示したい

4

1 に答える 1

2

残念ながら、コンソールは遅延評価されます。つまり、オブジェクトのプロパティの値は、クリックしてオブジェクトを表示した後にのみ取得されます。

Chrome を使用している場合は、オブジェクトが変更される前に表示できるように、コードの実行を停止するブレークポイントの設定を検討することをお勧めします。

ブレークポイントの詳細については、https ://developers.google.com/chrome-developer-tools/docs/scripts-breakpoints をご覧ください。

于 2013-03-17T22:55:59.140 に答える