我在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代码知道它的存在。
答案 0 :(得分:1)
我无法知道,但可能取决于javascript引擎。
还要记住,任何人都可以调试javascript并注意在闭包中设置_hiddenVariable2时(在_hiddenMethod中写一些像_hiddenVariable2 = 5的东西,尝试使用chrome的开发工具并在_hiddenMethod中插入一个断点,你将会是能够看到_hiddenVariable2何时被设置。)
因此,熟练的用户可以在调试V8中的代码时知道它的当前值。
答案 1 :(得分:-1)
将其声明为_hiddenVariable2 = undefined;
而不是var _hiddenVariable2 = undefined;
它将可用于代码中的任何其他模块