从字符串动态创建Javascript对象,并将对象作为函数的参数

从字符串动态创建Javascript对象,并将对象作为函数的参数,javascript,javascript-objects,Javascript,Javascript Objects,我想从Javascript字符串创建Javascript对象 var arrayOfName = new Array(); arrayOfName.push("module1"); arrayOfName.push("module2"); arrayOfName.push("module3"); arrayOfName.push("module4"); 对于这个例子,我想创建4个对象:module1、module2、module3和module4 之后,如何将这些对象作为函数的参数传递?像这样

我想从Javascript字符串创建Javascript对象

var arrayOfName = new Array();
arrayOfName.push("module1");
arrayOfName.push("module2");
arrayOfName.push("module3");
arrayOfName.push("module4");
对于这个例子,我想创建4个对象:module1、module2、module3和module4

之后,如何将这些对象作为函数的参数传递?像这样:

this.myFunctionTest = function myFunctionTest(module1, module2, module3, module4) {
  // ...
}
理想情况下,代码必须适用于名为“arrayOfName”的Javascript数组中的所有元素

myFunctionTest.apply(this, arrayOfName);
console.log(modules.map(require));
function modules(module1, module2, ...) {
    ...
}
modules.apply(this, modules.map(require));
apply
函数将
arrayOfName
的所有元素作为参数传递给
myFunctionTest

随着参数数量的增加,您可能不希望或发现难以维护参数数量。别担心,JavaScript已经涵盖了这一点:)它有一个叫做数组的对象。您可以使用
参数[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
,如下所示

myFunctionTest.apply(this, arrayOfName);
console.log(modules.map(require));
function modules(module1, module2, ...) {
    ...
}
modules.apply(this, modules.map(require));
如果你有这样一个函数

myFunctionTest.apply(this, arrayOfName);
console.log(modules.map(require));
function modules(module1, module2, ...) {
    ...
}
modules.apply(this, modules.map(require));
如果您想在所有加载的模块中调用它,那么您可以这样做

myFunctionTest.apply(this, arrayOfName);
console.log(modules.map(require));
function modules(module1, module2, ...) {
    ...
}
modules.apply(this, modules.map(require));

使用
。应用函数原型的
函数

myFunctionTest.apply(this, arrayOfName);

注意:您可以在这里找到更多信息:

如果我想作为require的参数传递,这是否有效?像
require(arrayOfPath,function(arrayOfName){})
你能解释一下吗?答案是肯定的,但我对变量的名称感到困惑,如果我想作为require的参数进行传递,那么从哪个框架开始这将起作用?像
require(arrayOfPath,function(arrayOfName){})
@wawanopoulos你的意思是,你想
require
同时需要多个模块吗?为了更完整,我在条目中有一些表示模块名的字符串。之后,我必须进行内部搜索以找到每个模块的正确路径,并在生成某个对象后传入require的函数参数。最后,我希望有这样的内容:
require([“./path/module1”,“./path/module2”],function(module1,module2){……}