1

次のコードでは、変数 t と hoverCalled をクロージャ スコープに保持しています。それらを jQuery.data プロパティに保持した場合、パフォーマンスは向上しますか? クロージャ スコープの作成は、パフォーマンスの面で少しコストがかかると聞いたことがあります。ただし、代替案よりも悪いかどうかはわかりません。

hoverDelay = function(hoverIn,hoverOut) {

var t=null;
var hoverCalled=false;
return {
    hoverIn:function() {        
        t = setTimeout(function() {     
            //$(self).data('hoverCalled',true);
            hoverCalled=true;
            hoverIn();          
        }, 500);
        $(this).data('timeout', t);     
    },
    hoverOut:function() {   
        if (hoverCalled){
            hoverOut();
            hoverCalled=false;
        } else {
            //var t=$(self).data('timeout');
            //clearTimeout($(this).data('timeout'));        
            t&&clearTimeout(t);
        }                               
    }

};

};

4

1 に答える 1

1

.data() メソッドを使用すると、任意の型のデータを循環参照から安全な方法で DOM 要素にアタッチできるため、メモリ リークを防ぐことができます。

JQueryのドキュメントを言います。そうです、パフォーマンスを重視するのであれば、JQuery.data() に値を格納することをお勧めします。ただし、小さなアプリケーションでは違いが見られない可能性があります。

また、DOM の変更にはかなりのコストがかかる場合があります。ただし、非常に大きなアプリケーションを構築していない場合は、ほとんど違いに気付かないでしょう。もしそうなら、あなたが持っているコードから判断して何が最善かを決める必要があると思います。

于 2013-01-25T16:35:19.677 に答える