私有变量和闭包

时间:2012-10-27 16:28:07

标签: javascript security closures

正如 Douglas Crockford 所说,我们可以在JavaScript中使用闭包的私有属性,它们非常便于处理安全数据。

现在我理解Encapsulation的概念,因为它有助于我们管理和构建代码。即使私有变量对性能也很有用,例如:您可以缓存DOM元素,属性和全局变量以进行迭代访问。

所以问题是:闭包或私有变量如何帮助我们处理敏感数据?

1 个答案:

答案 0 :(得分:2)

您可以使用代码的其余部分保护代码的某个组件的数据。或者您可能包含在页面中的任何第三方脚本。因此,您可以保护任何敏感的中间数据不被XSS攻击利用。

虽然DOM中存在的任何数据(例如输入元素中)都可以被页面中的任何脚本访问。但是,javascript中的某些变量可以在闭包范围内关闭,这使得它几乎无法被任何其他脚本访问。


x = {}
(function(){
    var a;

    x.fn = function(arg){
        a = arg;  // Can access and modify a;
    }

})();

function fn2(){
    a = 12; // This does not change the a above;
}