我见过一些使用匿名立即调用函数进行封装的代码,如下所示
(function(){
var ABC = ...
function XYZ(){
....
}
})();ABC或XYZ()完全无法访问(通过脚本注入/劫持)?
发布于 2012-12-29 22:16:17
在示例中,您提供的变量和函数在自调用函数作用域之外是完全不可访问的
发布于 2012-12-29 22:17:02
一个对象O在作用域中是“完全不可访问的”,只要该作用域有0个变量引用
上关闭的函数
在这种情况下,以上内容都不可用:您没有对生命周期范围之外的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();脚本注入/劫持部分太模糊,无法有意义地回答。
https://stackoverflow.com/questions/14082444
复制相似问题