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 回答