我怎么知道变量是否是私有的?

时间:2011-09-24 22:46:22

标签: javascript

我从未了解私人变量。我知道如何制作它们(使用模块模式,正确),但我不知道它们是如此私密。我在jsFiddle上说明了一个解释 - http://jsfiddle.net/fufWX/

如果仍然可以从outerscope访问_private变量,那么它是否真的是私有的?首先对私有变量有什么用处!?感谢。

var Module = (function() {
    var _private = "My private variable";
    return {
        get: function() { return _private; },
        set: function(e) { _private = e; }
    };
})();

var obj = {};


// How is that variable private when I can simply obtain it like this:
obj.get = Module.get; // ??
obj.set = Module.set; // ??

obj.get(); // "My private variable"

1 个答案:

答案 0 :(得分:4)

在JavaScript中没有真正的私有变量。只有局部变量。

在您的示例中,_private是“私有”的,因为在匿名函数之外,只能通过您提供的getset函数访问它。如果没有这些功能,_private将无法在匿名函数之外访问。


进一步阅读: