首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >局部函数/变量封装

局部函数/变量封装
EN

Stack Overflow用户
提问于 2012-12-29 22:13:01
回答 2查看 81关注 0票数 1

我见过一些使用匿名立即调用函数进行封装的代码,如下所示

代码语言:javascript
复制
(function(){
    var ABC = ...

    function XYZ(){
        ....
    }
})();

ABC或XYZ()完全无法访问(通过脚本注入/劫持)?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-12-29 22:16:17

在示例中,您提供的变量和函数在自调用函数作用域之外是完全不可访问的

票数 0
EN

Stack Overflow用户

发布于 2012-12-29 22:17:02

一个对象O在作用域中是“完全不可访问的”,只要该作用域有0个变量引用

  • 对象本身
  • O是
  • 的后代属性的任何对象都是在上述任意一个

上关闭的函数

在这种情况下,以上内容都不可用:您没有对生命周期范围之外的ABC内容的引用,也没有对作为其属性的任何对象的引用。这意味着它现在是不可访问的。但是,如果使用XYZ关闭ABC并返回XYZ,则现在可以通过XYZ访问ABC

代码语言:javascript
复制
var outerXYZ = (function(){
    var ABC = "foo";

    function XYZ(){
        return ABC;
    }

    return XYZ;
})();

// no way to access ABC directly, but

var outerABC = outerXYZ();

脚本注入/劫持部分太模糊,无法有意义地回答。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14082444

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档