代码之家  ›  专栏  ›  技术社区  ›  Mutation Person

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

  •  3
  • Mutation Person  · 技术社区  · 15 年前

    我最近就jquery chaning提出了以下问题:

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

    许多人回答说,也许我减少了语句中的链接量,而是将对象存储在holding变量中,这对我来说是有意义的。

    然而,我的理解是一个链中的对象已经被保存在一个堆栈上(排序),那么结果的缓存/存储是否在一个变量中,而不是有效地重新存储它,使用更多的内存?

    对其中一篇文章的评论似乎表明,可能不会有太多的性能损失(如果有的话),所以如果它更可读的话,我很乐意按照建议进行缓存。

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

    2 回复  |  直到 15 年前
        1
  •  8
  •   Amber    15 年前

    对象通常存储为引用-指向内存中位置的指针。两个保存同一对象的变量不会复制对象的所有数据-它们都只是将指针保存到实际对象数据所在的内存中的同一位置。因此,将对象存储在一个变量中对性能没有太大影响;没有什么重要的影响。

        2
  •  5
  •   jrharshath    15 年前

    添加到@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对象时 $ .