我刚刚问了关于jQuery chaning的问题:
Is there a preferred way of formatting jQuery chains to make them more readable?
许多人回答说,我可能会减少语句中的链接数量,而是将对象存储在保留变量中,这对我来说很有意义。
但是,我的理解是链中的对象已经存在于堆栈(各种类型)中,因此使用更多内存将结果缓存/存储在变量中并不能有效地重新存储它?
对其中一个帖子的评论似乎表明可能没有太多的性能影响(如果有的话),所以如果它更具可读性,我会很乐意按照建议进行缓存。
而且,如果我们使用缓存,那么这是否会开始限制.end()
和.andSelf()
的有用性?
答案 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对象。