JavaScript:是否可以访问私有变量(即隐藏在闭包中的变量)?
我在JavaScript中实现了一个对象作为闭包,有些方法是公共的,有些是私有的:JavaScript:是否可以访问私有变量(即隐藏在闭包中的变量)?,javascript,closures,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 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;
};
};
})();
(熟练的)用户是否有办法读取
\u hiddenVariable2
的内容?我假设它通过阅读JavaScript代码知道它的存在。将其声明为\u hiddenVariable2=undefined代码>而不是var\u hiddenVariable2=未定义代码>
它将可用于代码中的任何其他模块据我所知,这可能取决于javascript引擎
还请记住,任何人都可以调试javascript并在闭包中设置_hiddenVariable2时进行记录(在_hiddenMethod中编写类似于_hiddenVariable2=5的内容,尝试chrome的开发工具并在_hiddenMethod中插入断点,您将能够看到何时设置了_hiddenVariable2)
因此,一个熟练的用户可以知道它的当前值,如果他在V8中调试代码的话。哇,你没有用过全局这个词,但它就是window.\u hiddenVariable2
global variable!这根本不能解决问题是的!你是对的。如果您不使用var,它将成为一个全局变量谢谢您的洞察力!它没有回答问题,但我也不知道。