2013-03-20 60 views
0

避免Javascript中的變量/函數衝突(不使用jQuery插件)的方法是什麼?我想創建自己的新功能,但要避免衝突。如何避免Javascript中的變量/函數衝突(沒有使用jQuery插件)

我認爲使用函數作用域(僅用於作用域的函數)是一種方法。還有什麼其他的可能性?

另外,當你將某些功能封裝在某些內容中以避免衝突時,你如何從外部訪問它?

我在尋找基本的例子。

+0

jQuery插件(或任何插件)不會幫助命名衝突。 – RobG 2013-03-20 08:12:37

回答

1

如果您只將方法附加到將調用它們的其他對象,則可以將代碼封裝在立即調用的函數表達式(IIFE)中,以便在不創建任何新的全局對象或屬性的情況下分配方法。該策略對於附加偵聽器很有用,其中變量通過閉包共享給IIFE的執行上下文而不是全局上下文,並且由於它們附着在執行上下文中已經存在的對象上,因此可能沒有其他全局對象或變量。

雖然這樣的函數仍然可以訪問全局函數。

第二種策略是創建一個命名對象並將所有方法附加到屬性中。您還可以共享值作爲對象的屬性,或通過IIFE指定的函數中的閉包來共享。

實際上,對所有全局變量適當選擇的隨機前綴同樣適用於避免名稱衝突,但並不普遍。

+0

你能否爲這兩種方法提供非常基本的例子? – testndtv 2013-03-20 08:24:43

+0

有關IIFE的更多信息(包括代碼示例),請查看http://benalman.com/news/2010/11/immediately-invoked-function-expression/ - 特別是標有「模塊模式」的部分 – 2013-03-20 14:20:15