javascript - 匿名立即函数的私有(private)成员存储在哪里?

标签 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 模式一书。

如果您要使用 Chrome 控制台,您将如何定位变量名称,没有特权方法?

以这段代码为例:

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

a_1();

它记录的窗口对象,您可以浏览到 a_1 - 请参阅所附图片(下面的链接)

console logging the window object

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

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

最佳答案

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

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

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

如果这不仅仅是出于好奇,并且您希望通过闭包变量获得安全性,那么您将无法实现。 JavaScript 中没有安全性。

关于javascript - 匿名立即函数的私有(private)成员存储在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23862387/

相关文章:

javascript - PHP:条件 'if link is clicked' 则页面不刷新

javascript - FullCalendar.js 从选择事件中获取日期范围作为字符串

javascript - 附加到循环内的按钮时,如何在 JavaScript 中解析 XML 并在 nodeValue 中保留空格?

javascript - 返回 Express Router 中间件内部

console - 交互式 CLI 型 Web 应用程序

javascript - 避免检测到 "whether Chrome DevTools(console) is open"

node.js - 如何在 NodeJS 中使用 "Mac Terminal"和命令行 "console.log"显示 "Local heroku"中的多行?

c - 如何在C中打印特定文本的颜色

c# - 如何检测我的程序是否在 Windows 中运行?

javascript - 如何更改 Google 登录以显示个人资料信息而不是 console.log