使Javascript功能无法从控制台访问

时间:2016-01-26 20:14:59

标签: javascript

我正在使用 javascript functions javascript 文件,该文件不在闭包内。
显然,该功能可由控制台调用。

我知道添加闭包是最好的做法。但是,当我修补我发现如果我添加我的文件

window.myFunction = {} 

该功能通过控制台变得不可用。 这样安全吗?

1 个答案:

答案 0 :(得分:2)

Javascript(浏览器)中的所有全局变量/函数都是窗口对象的属性:

var x = "foo";
console.log(window.x); //foo

污染全局范围不是最佳实践,但如果您控制页面使用哪些脚本,则“不安全”。 (虽然我建议使用全局变量)

如果您确实需要一个全局变量,请考虑使用您知道其他脚本不会使用的名称:

(function(window, undefined){
   var privateVar = 5;

   window.mySite = {
     foo: "bar",
     func: function(){
        return "foo";
     }
   };

})(window);

console.log(window.mySite.func()); //"foo"
console.log(privateVar) //undefined

现在在IIFE(立即调用的函数表达式)之外,您可以使用window.mySitemySite,而privateVar将无法访问。

有关窗口对象here

的更多信息