2

オブジェクトがあり、そのオブジェクトがインスタンス化されると、クリック イベント ハンドラーが<body>. (アタッチのプロセスは、そのオブジェクトの定義内で発生します)

このオブジェクトは、URL が変更されたとき (ユーザーが別のページに移動したとき) にインスタンス化されます。

このオブジェクトの「ページごと」には常に 1 つのタイプがあり、前述のように、パンジが変更されると再インスタンス化され、古いオブジェクトは存在しなくなります。

添付プロセスは次のようになります。

var doc = $(document.body);

doc.off('click');

doc.on('click', function(){
   do_stuff();
});

これを使用しているのは、単純にイベント ハンドラーをアタッチし、.off().

ここで、このアタッチ プロセスを別の場所に移動することができます。たとえば、インスタンス化が行われるコード セクションなどです。これにより、そのオブジェクトに依存せず、ハンドラーが 1 回だけアタッチされることを保証できますが、アクセスできなくなります。いくつかのローカル変数と、そのコード セクションからアクセスできるようにする必要があります。

私の質問は次のとおりです。これはパフォーマンス面で多くの費用がかかりますか? ここ、stackoverflow に関するいくつかの投稿に気付きましたが、これは最適ではないことを強調していますが、ほとんどの例では、/binding.off()でバインドまたはバインド解除が行われているコードが表示されています。.on()

重要な注意: backbone.js を使用しています。「ワンページサイト」です。オブジェクトは基本的にビューであり、インスタンス化はルーターで行われます。

4

1 に答える 1

1

つまり、いいえ、を使用しても意味のあるパフォーマンスの低下はありませんoff。今、私はパフォーマンスの問題を引き起こすことは不可能であると聖書の山に誓うoffつもりはありませんが、100のうち99(おそらく1,000の999または10,000の9999のような)の現実世界のケースでは決してありませんパフォーマンスの問題を引き起こすオフを心配する。

別の言い方をoffすれば、本当にクレイジーなことをしたり、うっかりして本当にクレイジーなことをしたりしない限り、パフォーマンスが著しく低下することはありません。

off一方、電話をかけないと、パフォーマンス関連など、多くの問題が発生する可能性があります。

于 2013-03-21T21:03:34.713 に答える