正如三聯指出的那樣,您可以通過在宿主對象的內容中找到它來調用任何全局作用域函數。
的清潔器的方法,其中污染了全局命名空間少得多,是明確提出的功能到一個數組直接像這樣:
var dyn_functions = [];
dyn_functions['populate_Colours'] = function (arg1, arg2) {
// function body
};
dyn_functions['populate_Shapes'] = function (arg1, arg2) {
// function body
};
// calling one of the functions
var result = dyn_functions['populate_Shapes'](1, 2);
// this works as well due to the similarity between arrays and objects
var result2 = dyn_functions.populate_Shapes(1, 2);
該陣列還可以比全球其他一些對象的屬性主機對象也意味着您可以像jQuery一樣有效地創建自己的命名空間。如果/在同一頁面中包含多個單獨的實用程序庫,並且(您的設計的其他部分允許)可以更容易地在其他頁面中重新使用代碼時,這對減少衝突很有用。
你也可以使用像這樣一個對象,你可能會發現吸塵器:
var dyn_functions = {};
dyn_functions.populate_Colours = function (arg1, arg2) {
// function body
};
dyn_functions['populate_Shapes'] = function (arg1, arg2) {
// function body
};
// calling one of the functions
var result = dyn_functions.populate_Shapes(1, 2);
// this works as well due to the similarity between arrays and objects
var result2 = dyn_functions['populate_Shapes'](1, 2);
注意用數組或對象,您可以使用設置或訪問功能的任一方法,並能當然也會在其中存儲其他對象。您可以進一步降低兩種方法的含量的不同的語法,通過使用JS的文字符號,像這樣是不是synamic:
var dyn_functions = {
populate_Colours:function (arg1, arg2) {
// function body
};
, populate_Shapes:function (arg1, arg2) {
// function body
};
};
編輯:當然,對於較大的功能塊可以展開上述的很常見「模塊模式」,這是一種以有組織的方式封裝代碼特徵的流行方式。
我d建議不要這樣做,而應該讓地方分支機構採用單一的「人口聚集」方式。這將使它更易於測試,看起來不那麼「哈克」 – 2009-06-09 12:55:56
看到我的答案在這裏。 [在JavaScript中通過名稱調用](https://stackoverflow.com/a/46090820/7771019) – 2017-09-07 08:09:09