簡體   English   中英

如何將javascript函數鎖定到本地范圍?我想阻止它使用全局變量

[英]How do I Lock a javascript function to the local scope ? I want to prevent it from using global variables

有沒有辦法阻止函數使用全局變量,如documentwindownavigator和其他聲明的全局函數?

編輯1:如果我可以選擇受限制的全局對象,那將是很好的,因為我想允許該函數用作示例Math對象及其函數...

有沒有辦法阻止函數使用全局變量,如文檔,窗口,導航器和其他聲明的全局函數?

不,除非......

這項任務唯一可行的方法是,如果可以改變函數的詞法范圍 - 也就是說,以某種方式修改源代碼 ,例如如下所示包裝它。

想像:

;(function () {
    var window = "Hello"

    // original content
    function foo () {
        alert(window)
    }
    foo()

})()

這種方法經常在庫中用於創建私有命名空間,但在這些情況下,原始源也是可用的並且在設計時考慮到了這一點。 我之前使用過這個document改變 jQuery的本地版本。

雖然with起初看起來有前途的,重要的是要意識到這僅僅是一個詞匯結構以及和不引入動態變量。

快樂的編碼。

您可以要求您的用戶將自己限制為ADsafe代碼。 來自網站:

ADsafe可以安全地將訪客代碼(例如第三方腳本廣告或小部件)放在網頁上。 ADsafe定義了一個強大的JavaScript子集,允許訪客代碼執行有價值的交互,同時防止惡意或意外損壞或入侵。 ADsafe子集可以通過JSLint等工具進行機械驗證,因此無需人工檢查即可查看訪客代碼的安全性。 ADsafe子集還實施了良好的編碼實踐,增加了訪客代碼正確運行的可能性。

如果勾選右側框, JSLint將驗證代碼是否符合ADsafe,因此可以安全地在您的站點上執行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM