JavaScript:是否可以访问私有变量(即隐藏在闭包内的变量)?

时间:2012-02-04 07:57:39

标签: javascript closures

我在JavaScript中实现了一个对象作为闭包,一些方法是公开的,另一些是私有的:

var MyObject = (function(){

    function _hiddenMethod() {
        /* Do something fancy here, such as reading data 
        from an external source and storing it in 
        _hiddenVariable2 */
    } 

    var _hiddenVariable1 = 3;
    var _hiddenVariable2 = undefined;

    return {
        publicMethod: function() {
            _hiddenMethod();
            return _hiddenVariable1;
        };
    };

})();

(熟练的)用户是否有可能阅读_hiddenVariable2的内容?我认为通过阅读JavaScript代码知道它的存在。

2 个答案:

答案 0 :(得分:1)

我无法知道,但可能取决于javascript引擎。

还要记住,任何人都可以调试javascript并注意在闭包中设置_hiddenVariable2时(在_hiddenMethod中写一些像_hiddenVariable2 = 5的东西,尝试使用chrome的开发工具并在_hiddenMethod中插入一个断点,你将会是能够看到_hiddenVariable2何时被设置。)

因此,熟练的用户可以在调试V8中的代码时知道它的当前值。

答案 1 :(得分:-1)

将其声明为_hiddenVariable2 = undefined;而不是var _hiddenVariable2 = undefined; 它将可用于代码中的任何其他模块