$(this)vs var mythis = $(this)的性能差异

时间:2018-01-16 07:04:44

标签: javascript jquery

我正在使用jquery开发一个应用程序,我在许多地方使用$(this)进行各种操作,如hasClass,addClass,attr等。

我应该保持原样还是声明像

这样的变量
var mythis=$(this);

并使用 mythis 进行进一步的通话。

在哪种情况下,应用程序性能会提高?

任何帮助都将受到高度赞赏。

由于

3 个答案:

答案 0 :(得分:2)

关于这个fiddle,这并不重要。因此,正如@Fawzan所说,请保持$(this)以提高可读性。

var iterationMax = 100000;

var t1Start = Date.now();
for(var i=0; i<iterationMax; i++) {
  var hasClass = $('#jquery-test').hasClass("no-class");
}
var t1End = Date.now();

var t2Start = Date.now();
var jqueryRef = $('#jquery-test');
for(var i=0; i<iterationMax; i++) {
  var hasClass = jqueryRef.hasClass("no-class");
}
var t2End = Date.now();

$("#t1").html("T1 took: " + (t1End - t1Start) + " ms");
$("#t2").html("T2 took: " + (t2End - t2Start) + " ms");



<div id="jquery-test"></div>

<div id="t1"></div>
<div id="t2"></div>

答案 1 :(得分:0)

使用var mythis=$(this)会略微提高您的效果。

因为$(this)将初始化绑定到当前范围的jquery对象。如果将此对象保留在变量中,它将保存该初始化的性能

出于问题,我认为最好使用

var myID = $("#id");
var myClass = $(".your_class");
...

对于id,class,attributes对象。等因为当使用$()时,Jquery将从当前网站DOM中搜索并初始化jquery对象,如果需要从多个dom扫描,则会降低性能

答案 2 :(得分:0)

var mythis = $(this);

会更好。

通过$(this)进行一次函数调用,并给出对该对象的引用。

简单来说,如果你要总结2个数字,那么更好的是什么?存储结果一次或一次又一次地计算。存储结果..对吗?