我有兩個外部JavaScript庫文件,我必須加載在相同的JSP頁面上。它們都有一個名爲「autoSave()」的函數,它們都沒有參數。我不能修改他們的簽名,因爲他們不是我的腳本文件。如果函數來自外部JavaScript庫,如何處理JavaScript中衝突的函數名稱?
如何明確地在腳本A或腳本B中調用函數?優先順序是如何決定的?
我有兩個外部JavaScript庫文件,我必須加載在相同的JSP頁面上。它們都有一個名爲「autoSave()」的函數,它們都沒有參數。我不能修改他們的簽名,因爲他們不是我的腳本文件。如果函數來自外部JavaScript庫,如何處理JavaScript中衝突的函數名稱?
如何明確地在腳本A或腳本B中調用函數?優先順序是如何決定的?
由第二個腳本定義的函數將覆蓋由第一個腳本定義的函數。
您可以保存從一個腳本功能的副本,包括腳本B.
例如前:
<script type="text/javascript" src="Script A"></script>
<script type="text/javascript">
var autoSave_A = autoSave;
</script>
<script type="text/javascript" src="Script B"></script>
<script type="text/javascript">
var autoSave_B = autoSave;
</script>
注意,順便說一句,如果腳本A調用autoSave
按名稱腳本會調用錯誤的autoSave
並(可能)停止工作。
在使用包裝器方法從任一腳本調用函數之前,可以通過交換autoSave
函數來解決該問題。
聽起來不錯!謝謝! – 2010-06-05 23:42:40
相同函數名稱的第二個函數聲明會覆蓋較早的函數聲明,所以它將取決於您的腳本包含的順序。
那麼,IMO的圖書館應該是命名空間,所以你可以很容易地致電lib1.autoSave()
或lib2.autoSave(arg)
。
目標是儘可能使用few global variables。
給看看下面的文章:
我發現可以用來產生兩個目標相互衝突的功能名稱列表的功能。 http://stackoverflow.com/a/15330156/975097 – 2013-03-11 02:11:26