您可以使用Function.prototype.apply
這樣
myFunctionTest.apply(this, arrayOfName);
的apply
函數傳遞的arrayOfName
所有元素作爲參數傳遞給myFunctionTest
。
隨着參數數量的增加,您可能不希望或難以維護數量或參數。別擔心,JavaScript已經涵蓋了:)它有一個叫做arguments
的東西,它是一個像對象一樣的數組。您可以使用arguments[0]
訪問第一個參數,如訪問常規數組對象。
var arrayOfName = [];
arrayOfName.push("module1");
arrayOfName.push("module2");
arrayOfName.push("module3");
arrayOfName.push("module4");
function myFunctionTest(param1, param2, param3) {
console.log(param1, param2, param3);
console.log(arguments);
}
myFunctionTest.apply(this, arrayOfName);
// module1 module2 module3
// { '0': 'module1', '1': 'module2', '2': 'module3', '3': 'module4' }
如果你想要求節點模塊,用這種方法
var modules = ["lodash", "underscore", "q"];
require.apply(this, modules);
但是,如果你想獲得由require
爲每個模塊返回的對象,那麼你最好的選擇是使用Array.prototype.map
與require
,這樣
console.log(modules.map(require));
如果你有這樣
功能
function modules(module1, module2, ...) {
...
}
如果你想與所有加載的模塊調用它,那麼你會做這樣的事情
modules.apply(this, modules.map(require));
這是否會工作,如果我想通過作爲要求的參數?像'require(arrayOfPath,function(arrayOfName){})' – wawanopoulos
@wawanopoulos你的意思是,你想同時「需要」多個模塊? – thefourtheye
是的,這就是我想要做的。 – wawanopoulos