Javascript 局部函数/变量封装
我看到一些使用匿名立即调用函数进行封装的代码如下所示Javascript 局部函数/变量封装,javascript,code-injection,Javascript,Code Injection,我看到一些使用匿名立即调用函数进行封装的代码如下所示 (function(){ var ABC = ... function XYZ(){ .... } })(); ABC或XYZ()是否完全不可访问(通过脚本注入/劫持)?在您提供的示例中,变量和函数在自调用函数作用域之外完全不可访问一旦作用域中有0个变量引用 对象本身 O是其后代属性的任何对象 一个已在上述任一项上关闭的函数 在这种情况下,上述内容均不可用:您没有对IIFE范围外的ABC内容的引
(function(){
var ABC = ...
function XYZ(){
....
}
})();
ABC或XYZ()是否完全不可访问(通过脚本注入/劫持)?在您提供的示例中,变量和函数在自调用函数作用域之外完全不可访问一旦作用域中有0个变量引用
- 对象本身
- O是其后代属性的任何对象
- 一个已在上述任一项上关闭的函数
ABC
内容的引用,也没有对它所属的任何对象的引用。这意味着它现在无法访问。但是,如果要使用XYZ
关闭ABC
,并返回XYZ
,现在可以通过XYZ
访问ABC
:
var outerXYZ = (function(){
var ABC = "foo";
function XYZ(){
return ABC;
}
return XYZ;
})();
// no way to access ABC directly, but
var outerABC = outerXYZ();
脚本注入/劫持部分太模糊,无法有意义地回答。抱歉,没有看到
XYZ
的功能。