有没有办法阻止函数使用全局变量,如document
,window
,navigator
和其他声明的全局函数?
EDIT1:如果我可以选择哪些受限制的全局对象会很棒,因为我想允许该函数用作示例Math对象及其函数......
答案 0 :(得分:5)
有没有办法阻止函数使用全局变量,如文档,窗口,导航器和其他声明的全局函数?
不,除非......
这项任务唯一可行的方法是,如果可以改变函数的 lexical 范围 - 也就是说,源被修改以某种方式,例如包裹它如下图所示。
想象:
;(function () {
var window = "Hello"
// original content
function foo () {
alert(window)
}
foo()
})()
这种方法经常在库中用于创建私有命名空间,但在这些情况下,原始源也是可用的并且在设计时考虑到了这一点。我之前使用此document
来更改本地版本的jQuery。
虽然with
最初可能看起来很有希望,但重要的是要意识到它只是一个词汇构造,并且不会引入动态变量。
快乐的编码。
答案 1 :(得分:0)