请教一个JS的问题,多谢回复!谢谢~
发布于 3年前 作者 leolovenodejs 1216 次浏览

麻烦请问,这样写会导致内存泄露吗?多谢回复! 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这两个函数中也并不存在循环调用的问题,只是有一个问题,因为大部分都是相同命名,是局部变量和全局变量混淆的问题,很容易让大家误解会存在内存泄漏吧。 个人觉得,如有问题,希望大家一起交流!

回到顶部