2009-01-29 81 views
0

我有一個有趣的問題,我不確定如何最好地解決。動態加載多個JS腳本,其中腳本全部描述相同

我有包含以下JS腳本:

var obj = new namespace.MyObjectName("key", [12, 11, 22, 33, 454, 552, 222], [33, 22, 33, 11, 22, 222, 111]); 

    namespace.MyObjectName = function(keyName, data1, data2) { 
    this.myData1 = data1; 
    this.myData2 = data2; 

    this.holder = [ 
     [keyName, [myData1, myData2]] 
    ]; 
    }; 

    namespace.MyObjectName.prototype.DoSomething = function(arg1, argArray) { 
    this.globalVar = [ 
     "Display " + arg1 + " into string using " + argArray[0] + "<br> for visual purposes", 

     "Display " + arg1 + " into string using " + argArray[2] + "<br> for visual purposes" 
    ]; 
    }; 

自動化是創建這些JS文件的副本,每個包含對象按照上述的相同的聲明,與沿行的文件名:

  • file1.js
  • file2.js

的每個文件的不同之處在於,方法名稱內容總是不同/生成,傳遞給構造函數的數組值也是如此。

以上所有內容在單獨使用JS的生命期間都很好。


我現在想要做的是讓一個HTML頁面動態地加載一個或多個這些文件(以供後面的代碼進行比較),爲此我可能會使用 this answer,但是由於每個腳本聲明對象同樣的方式,當我加載多個副本時,我正要面對如何阻止他們彼此踐踏。

這裏是我正在考慮一些選擇:

  1. 寫JS以這樣一種方式,每個腳本文件對象唯一命名空間,但是當加載寄存器本身以某種方式與在HTML主件的JS代碼它保存到所有的對象引用
    • 編寫的HTML這樣一種方式,每個腳本加載隔離的方式(據我所知,沒有辦法在JS中這樣做,但我可能是錯誤的)
    • 其他一些方法(s)未知,人們可能有我DEAS上

我現在的偏見是對(1),但我把整個事情進行討論,因爲這種做法可能有固有的問題或其他可清楚地證明優越。

回答

0

我真的不明白的問題,但要避免命名空間的踐踏,你可以這樣做:

var namespace = namespace || function() {} 
+0

我不太肯定做了什麼? ..將現有的var命名空間分配給自己,否則爲空對象? – 2009-01-29 19:40:00