匿名直接函数的私有成员存储在哪里?

时间:2014-05-26 03:43:36

标签: javascript console console.log private-methods

以例如:

var myobj; // this will be the object


(function () {
    // private members
    var name = "my, oh my";


    // implement the public part
    // note -- no `var`
    myobj = {
        // privileged method
        getName: function () {
            return name;
        }
    };
}());


myobj.getName(); // "my, oh my”

来自Stefanov的JavaScript Patterns一书。

如果您要使用Chrome控制台,那么如何在没有特权方法的情况下找到变量名称

以此代码为例:

var a_1 = function(){console.log(this)}

a_1();

它记录的窗口对象,您可以浏览到a_1 - 查看附加的图像(链接如下)

console logging the window object

我们可以对匿名立即函数中的 name 变量做同样的事吗?

如果我清楚地构建了我的问题,请告诉我。

1 个答案:

答案 0 :(得分:2)

您似乎在询问是否可以在Chrome控制台中读取该变量。

答案是 。在控制台中输入window.myobj并展开对象,如下所示,您会在"my, oh my"下看到name

window.myobj -> getName -> <function scope> -> Closure -> name;

如果这不仅仅是一种好奇心,并且你希望通过闭包变量获得安全性,那么你就不会得到它。 JavaScript中有没有安全性。