我想从Javascript String创建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) {
// ...
}
理想情况下,代码必须适用于Javascript数组中名为" arrayOfName"的所有元素。
答案 0 :(得分:1)
您可以像这样使用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));
答案 1 :(得分:1)
使用函数原型的.apply
函数
myFunctionTest.apply(this, arrayOfName);
注意:您可以在此处找到更多信息:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/apply