如何将javascript函数锁定到本地范围?我想阻止它使用全局变量
是否有方法防止函数使用全局变量,如如何将javascript函数锁定到本地范围?我想阻止它使用全局变量,javascript,function,scope,global-variables,global,Javascript,Function,Scope,Global Variables,Global,是否有方法防止函数使用全局变量,如文档、窗口、导航器,以及其他声明的全局函数 EDIT1:如果我能选择哪些全局对象是受限制的,那就太好了,因为我想让函数用一个例子,数学对象和它的函数 有没有办法防止函数使用全局变量,如文档、窗口、导航器和其他声明的全局函数 不,除非… 完成此任务的唯一方法是修改函数的词法范围——也就是说,以某种方式修改源代码,例如如下所示对其进行包装 想象一下: ;(function () { var window = "Hello" // original
文档
、窗口
、导航器
,以及其他声明的全局函数
EDIT1:如果我能选择哪些全局对象是受限制的,那就太好了,因为我想让函数用一个例子,数学对象和它的函数
有没有办法防止函数使用全局变量,如文档、窗口、导航器和其他声明的全局函数
不,除非…
完成此任务的唯一方法是修改函数的词法范围——也就是说,以某种方式修改源代码,例如如下所示对其进行包装
想象一下:
;(function () {
var window = "Hello"
// original content
function foo () {
alert(window)
}
foo()
})()
这种方法通常在库中用于创建私有名称空间,但在这些情况下,原始源代码也可以使用,并在设计时考虑到这一点。我以前在文档中使用过它来更改jQuery的本地版本
虽然使用
的一开始可能看起来很有希望,但重要的是要认识到它也只是一个词汇结构,不引入动态变量
快乐的编码。你可以要求你的用户限制自己编码。网址:
ADsafe可以安全地将来宾代码(如第三方脚本广告或小部件)放在网页上。ADsafe定义了JavaScript的一个子集,其功能强大到允许来宾代码执行有价值的交互,同时防止恶意或意外的损坏或入侵。ADsafe子集可以通过JSLint等工具进行机械验证,这样就不需要人为检查来检查来宾代码的安全性。ADsafe子集还实施了良好的编码实践,增加了来宾代码正确运行的可能性
如果勾选正确的框,将验证代码是否符合ADsafe标准,因此可以安全地在您的站点上执行。谁在调用该函数?我已经理解了这个问题,但没有理解其中的情节!任何人都可以定义函数(通过字符串提交),我将调用eval(fn);fn(某物)
其中fn是由陌生人定义的函数。。。我想让它安全(如果可能的话)。将它作为字符串在循环中传递,并返回整洁的部分(包含所有需要的函数)。制作模板需要一些努力,但这是可能的。