麻烦请问,这样写会导致内存泄露吗?多谢回复! for examle:
var Pro = {
doc : document,
getLeftArrowEvent : function(){
//引入this,即整个对象为方便以后可能的引用
var is = this,
doc = is.doc,
leftArrow = doc.getElementById('leftArrow');
leftArrow.onmouseover = function(){
var th = is,
doc = th.doc,
leftArrow = doc.getElementById('leftArrow');
leftArrow.style.cursor = 'pointer';
};
leftArrow.onmouseout = function(){
var th = is,
doc = th.doc,
leftArrow = doc.getElementById('leftArrow');
leftArrow.style.cursor = '';
};
leftArrow = null;
}
};
1 回复
觉得不会,不存在循环计数 Pro域下的doc,在getLeftArrowEvent使用一次计数+1,执行结束后,doc计数会减一因此最终会被回收。 同样我们看getLeftArrowEvent下的is和doc这些在本函数中都是使用了一次,都会被正常回收。leftArrow被使用了两次,但是在执行完 leftArrow.onmouseover 计数减一,继续执行完leftArrow.onmouseout再减一。同样看onmouseover 、onmouseout这两个函数中也并不存在循环调用的问题,只是有一个问题,因为大部分都是相同命名,是局部变量和全局变量混淆的问题,很容易让大家误解会存在内存泄漏吧。 个人觉得,如有问题,希望大家一起交流!