我可以在此JavaScript函数的覆盖版本中访问私有变量

时间:2014-03-13 09:00:03

标签: javascript

我正在使用一些同事编写的JavaScript,并且需要覆盖另一个脚本文件中的一个函数,这些函数将在第一个脚本文件之后加载。

我认为问题是我要覆盖的函数是立即函数中返回对象的一部分,因此我无法访问原始在我的重写版本中使用的'私有'变量,因为它们超出了范围。也许和榜样会有所帮助。结构如下所示:

(function(){
    // stuff here
    $.obj=(function(){      
        var initialized=false;
        return {                    
            init:function(){ \\ stuff here}                 
         }      
    }()
})();

在我的覆盖中,我想做类似的事情:

$.obj.init = function(){ 
    // different implementation but with access to value of 'initialized'
}

有没有办法可以达到我想做的目的?

1 个答案:

答案 0 :(得分:0)

您需要使私有变量可访问:

(function(){
    // stuff here
    $.obj=(function(){      
        this.initialized = false;
        return {                    
            init:function(){ \\ stuff here}                 
         }      
    }()
})();

所以你以后可以访问它:

$.obj.init = function(){ 
    // different implementation but with access to value of 'initialized'
    this.initialized = true;
}

但请注意,为此,您需要创建一个对象。我的意思是,你需要像这样呼叫obj

var newObj = new $.obj();