本地函数/变量封装

时间:2012-12-29 14:13:01

标签: javascript code-injection

我已经看到一些使用匿名立即调用函数进行封装的代码看起来像这样

(function(){
    var ABC = ...

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

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

2 个答案:

答案 0 :(得分:2)

一旦范围有0个引用

的变量,对象O在范围内“完全不可访问”
  • 对象本身
  • O是
  • 的后代属性的任何对象
  • 已关闭上述任何一项
  • 的功能

在这种情况下,以上都不可用:您没有对IIFE范围之外的ABC的内容的引用,并且您没有对任何对象的引用它是属性的。这意味着它现在无法访问。但是,如果您使用ABC关闭XYZ并返回XYZ,则现在可以通过 {{1}访问ABC }}:

XYZ

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

答案 1 :(得分:0)

在您提供的示例中,变量和函数在自调用函数范围内完全无法访问