正如 Douglas Crockford 所说,我们可以在JavaScript中使用闭包的私有属性,它们非常便于处理安全数据。
现在我理解Encapsulation的概念,因为它有助于我们管理和构建代码。即使私有变量对性能也很有用,例如:您可以缓存DOM元素,属性和全局变量以进行迭代访问。
所以问题是:闭包或私有变量如何帮助我们处理敏感数据?
答案 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;
}