避免Javascript中的變量/函數衝突(不使用jQuery插件)的方法是什麼?我想創建自己的新功能,但要避免衝突。如何避免Javascript中的變量/函數衝突(沒有使用jQuery插件)
我認爲使用函數作用域(僅用於作用域的函數)是一種方法。還有什麼其他的可能性?
另外,當你將某些功能封裝在某些內容中以避免衝突時,你如何從外部訪問它?
我在尋找基本的例子。
避免Javascript中的變量/函數衝突(不使用jQuery插件)的方法是什麼?我想創建自己的新功能,但要避免衝突。如何避免Javascript中的變量/函數衝突(沒有使用jQuery插件)
我認爲使用函數作用域(僅用於作用域的函數)是一種方法。還有什麼其他的可能性?
另外,當你將某些功能封裝在某些內容中以避免衝突時,你如何從外部訪問它?
我在尋找基本的例子。
如果您只將方法附加到將調用它們的其他對象,則可以將代碼封裝在立即調用的函數表達式(IIFE)中,以便在不創建任何新的全局對象或屬性的情況下分配方法。該策略對於附加偵聽器很有用,其中變量通過閉包共享給IIFE的執行上下文而不是全局上下文,並且由於它們附着在執行上下文中已經存在的對象上,因此可能沒有其他全局對象或變量。
雖然這樣的函數仍然可以訪問全局函數。
第二種策略是創建一個命名對象並將所有方法附加到屬性中。您還可以共享值作爲對象的屬性,或通過IIFE指定的函數中的閉包來共享。
實際上,對所有全局變量適當選擇的隨機前綴同樣適用於避免名稱衝突,但並不普遍。
你能否爲這兩種方法提供非常基本的例子? – testndtv 2013-03-20 08:24:43
有關IIFE的更多信息(包括代碼示例),請查看http://benalman.com/news/2010/11/immediately-invoked-function-expression/ - 特別是標有「模塊模式」的部分 – 2013-03-20 14:20:15
jQuery插件(或任何插件)不會幫助命名衝突。 – RobG 2013-03-20 08:12:37