有沒有辦法阻止函數使用全局變量,如document
,window
,navigator
和其他聲明的全局函數?如何將JavaScript函數鎖定到本地作用域?我想阻止它使用全局變量
EDIT1:如果我能選擇只限於這將是巨大的,因爲我想使功能使用爲例Math對象,它的功能,它的全局對象...
有沒有辦法阻止函數使用全局變量,如document
,window
,navigator
和其他聲明的全局函數?如何將JavaScript函數鎖定到本地作用域?我想阻止它使用全局變量
EDIT1:如果我能選擇只限於這將是巨大的,因爲我想使功能使用爲例Math對象,它的功能,它的全局對象...
有沒有辦法阻止函數使用全局變量,如文檔,窗口,導航器和其他聲明的全局函數?
沒有,除非...
的唯一方式這個任務可能是,如果職能的詞法範圍可以改變 - 那就是,源被修改以某種方式,例如如下所示包裝它。
試想:
;(function() {
var window = "Hello"
// original content
function foo() {
alert(window)
}
foo()
})()
使用這種方式常常在圖書館創建私有命名空間的同時,在這種情況下,原始來源也可以和設計考慮到這一點。我已經在document
之前對改變了這個本地版本的jQuery。
雖然with
可能看起來很有希望,但重要的是要意識到它只是一個詞法結構,並且不會引入動態變量。
快樂編碼。
誰在調用函數?我已經理解了這個問題,但不是這種情況! – R1234 2011-05-21 18:28:47
任何人都可以定義函數(通過字符串提交),我會調用'eval(fn); fn(某事)'其中fn是陌生人定義的函數......我想使它安全(如果可能的話)。 – 2011-05-21 18:31:10
將它作爲字符串在循環中傳遞並返回整齊的部分(包含您需要的所有函數)。這將需要一些努力來製作模板,但是可能的。 – R1234 2011-05-21 18:42:04