我最近刚问了关于 jQuery chaning 的以下问题:
许多人回答说,也许我减少了语句中的链接数量,而是将对象存储在持有变量中,这对我来说很有意义。
但是,我的理解是,链中的对象已经保存在堆栈中(各种),那么结果的缓存/存储在变量中是否不能有效地重新存储它,使用更多的内存?
对其中一篇文章的评论似乎表明可能不会对性能造成太大影响(如果有的话),所以如果它更具可读性,我很乐意按照建议进行缓存。
而且,如果我们使用缓存,这不会开始限制.end()and的用处.andSelf()吗?
我最近刚问了关于 jQuery chaning 的以下问题:
许多人回答说,也许我减少了语句中的链接数量,而是将对象存储在持有变量中,这对我来说很有意义。
但是,我的理解是,链中的对象已经保存在堆栈中(各种),那么结果的缓存/存储在变量中是否不能有效地重新存储它,使用更多的内存?
对其中一篇文章的评论似乎表明可能不会对性能造成太大影响(如果有的话),所以如果它更具可读性,我很乐意按照建议进行缓存。
而且,如果我们使用缓存,这不会开始限制.end()and的用处.andSelf()吗?
对象通常存储为引用 - 指向内存中位置的指针。两个持有同一个对象的变量不会复制对象的所有数据——它们只是持有指向实际对象数据所在的内存中相同位置的指针。因此,将对象存储在变量中根本不会对性能造成太大影响。没什么大不了的。
添加到@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 对象$。