我需要从匿名函数访问私有变量。此匿名函数由以下设置:
coolObject = new (function(){
this.public = "public";
var private = "secrets";
// General functions here, no getter or setter for private
})();
我可以通过coolObject.public
或console.log(coolObject.public)
轻松读取和写入coolObject.public = "newValue"
,但如何对私有变量执行相同操作?另一件事是我无法向构造函数添加代码,coolObject
将始终最初定义为这样。
所以,总结一下,有没有办法可以从JavaScript中的匿名函数访问私有变量,如果是这样,怎么办?
编辑:我尝试通过coolObject.getPrivate = function(){return private;};
创建getter和setter,但这不起作用。
答案 0 :(得分:2)
否如果不更改您拥有的代码,则无法实现。
正如您所提到的,您无法更改代码,您无法读取私有变量。将变量设为私有的原因是为了确保您无法从范围之外读取和写入。如果可能的话,那么私有变量的含义和原因就会丢失。