我发现自己对 javascript 垃圾收集以及如何最好地鼓励它感到很困惑。
我想知道的是与特定模式有关。我对模式本身是否被认为是一个好主意或坏主意不感兴趣,我只是对浏览器垃圾收集器将如何响应感兴趣,即引用会被释放和收集还是会导致泄漏。
想象一下这种模式:
   TEST = {     
                init : function(){                        
                      this.cache = {
                           element : $('#element')
                      };
                },
                func1 : function(){
                       this.cache.element.show();                     
                },
                func2 : function(){                                            
                       TEST.cache.element.show(); 
                },
                func3 : function(){
                       var self = this;                      
                       self.cache.element.show(); 
                },
                func4 : function(){
                       var element = this.cache.element;
                       element.show();
                }
                func5 : function(){
                        this.auxfunc(this.cache.element);
                }
                auxfunc1 : function(el){
                         el.show();
                }
                func6 : function(){
                       var el = getElement();
                       el.show();
                }
                getElement : function(){
                       return this.cache.element;
                }
    }
现在想象一下页面加载TEST.init()被调用;
然后在不同的时间调用各种函数。
我想知道的是,在初始化时缓存元素或对象或其他任何东西,并以上述方式在应用程序的整个生命周期中引用它们,是否会对浏览器的垃圾收集器产生积极或消极的影响。
有什么区别吗?哪种方法最能鼓励垃圾收集?它们会导致泄漏吗?有没有循环引用?如果是在哪里?