DOM是页面元素对象的体现,DOM是个树,每个DOM节点和其他节点有子父、兄弟关系,每次寻找的时候,都会一层层的去寻找,对于相同且已经查找过的节点,每次都去重新找,如果节点层级关系多了,性能就很低了。
每次$()都会创建一个新的jquery对象。 在一个事件/区域内的this对象,就是代表事件调用本对象。如果每次使用到再重新去取,显然多余了。如果使用该对象频率高,应该吧变量缓存起来。不要再每次$(this).
如:
$("a").click(function(){
$(this).xxx
$(this).xxx
})
每次执行一段代码,就会去重新生成这个$(this)这个对象,如果方法内的操作多了,就会显得效率低下。
应该缓存起来:
var self = $(this);
self.xxx
self.xxx
缓存变量还一个好处就是以便于在本函数中嵌套的函数也能继续使用此上下文对象。
比如vue中的methods.
methods:{
add:function(){
var vm = this;
$("a").click(function(){
alert(vm.message);//继续访问当前方法中vue实例 如果不缓存vm实例对象,那么这里直接使用this,就不是vue实例了,而是DOM a元素对象了
})
}
}