在javascript中访问“私有”变量

GBa*_*oso 2 javascript

假设我有以下课程:

function MyClass(){

    this.public = function(){
        console.log(private);
    };

    var private = 10;
}


var test = new MyClass;

test.public(); // logs 10
test.private; // undefined
Run Code Online (Sandbox Code Playgroud)

我想知道是否可以从外部访问私有变量。查看 chrome 的控制台似乎是可能的,因为它显示了它的上下文:

在此处输入图片说明

编辑:只是为了澄清:我知道如何正确公开它。只是想确定是否没有一些hacky方式来访问它。

jfr*_*d00 5

您的private变量是该函数作用域的局部变量,并且在 Javascript 中,无法从作用域外访问作用域内的变量。您只能从范围内访问它。没有办法从 Javascript 代码本身解决这个问题。

调试器可以做的事情(可以访问 VM 内部)与常规 Javascript 代码可以做的事情不同。 调试器可以查看范围内,但范围外的 JS 代码不能。

显然你可以为它制作一个存取器,但是没有存取器,就没有办法从外面得到它。