将jQuery对象存储在变量中是否不利?

时间:2009-08-17 09:56:12

标签: javascript jquery chaining performance

我刚刚问了关于jQuery chaning的问题:

Is there a preferred way of formatting jQuery chains to make them more readable?

许多人回答说,我可能会减少语句中的链接数量,而是将对象存储在保留变量中,这对我来说很有意义。

但是,我的理解是链中的对象已经存在于堆栈(各种类型)中,因此使用更多内存将结果缓存/存储在变量中并不能有效地重新存储它?

对其中一个帖子的评论似乎表明可能没有太多的性能影响(如果有的话),所以如果它更具可读性,我会很乐意按照建议进行缓存。

而且,如果我们使用缓存,那么这是否会开始限制.end().andSelf()的有用性?

2 个答案:

答案 0 :(得分:8)

对象通常存储为引用 - 指向内存中位置的指针。保存相同对象的两个变量不会复制所有对象的数据 - 它们只保存指向实际对象数据所在的内存中相同位置的指针。因此,将对象存储在变量中根本不会有很多性能损失;没什么大不了的。

答案 1 :(得分:5)

添加@ Dav的答案,有时候在变量中存储jquery对象会是一件好事。经典例子:

$('#something div').each( function() {
    $(this).css({'background-color':'#afa'});
    // do some stuff;
    $(this).slideDown('fast');
}

更好的方式:

$('#something div').each( function() {
    var $this = $(this);
    $this.css({'background-color':'#afa'});
    // do some stuff;
    $this.slideDown('fast');
}

这样,只要您调用$,就可以避免创建 jquery对象。