我从未了解私人变量。我知道如何制作它们(使用模块模式,正确),但我不知道它们是如此私密。我在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"
答案 0 :(得分:4)
在JavaScript中没有真正的私有变量。只有局部变量。
在您的示例中,_private
是“私有”的,因为在匿名函数之外,只能通过您提供的get
和set
函数访问它。如果没有这些功能,_private
将无法在匿名函数之外访问。
进一步阅读: