6

我经常$(this)在 jQuery 事件处理程序中使用并且从不缓存它。如果我会做

var $this = $(this);

并且将使用变量而不是构造函数,我的代码会获得任何显着的额外性能吗?


JS Perf 测试以测量此优化带来的性能增益:http: //jsperf.com/jquery-this-caching

4

2 回答 2

9

一个很小很小的不易察觉的,是的。重要的?不。

每次你这样做$(this),它都会导致几个函数调用和几个内存分配。函数调用既不存在也不存在(即使在 IE6 上,我也很惊讶地得知),但是内存流失可能会在不能很好地处理内存管理的浏览器上加起来。大多数现代人都这样做。

我总是将结果保存到变量中,因为我只是不喜欢调用函数和不必要地分配对象。它可以节省输入这些括号。:-)

于 2012-12-17T17:53:19.787 回答
3

是的,因为每次你$(this)创建一个新的 jquery 对象。
但是你不会得到显着的性能,只要你做超过 1000 倍

缓存多次使用的对象是一种很好的做法。

于 2012-12-17T17:53:36.997 回答