我正在尝试创建一个通用函数,您可以在其中传递具有随机函数属性的对象。有了这个,您应该能够设置一个属性,说明函数每个参数的键和值。
通用函数应该使用所有参数调用这个“随机”函数。
但是我不太确定该怎么做?
// Keep in mind its created for demonstration purposes
var functionOne = function(id)
{
return id;
}
var functionTwo = function(id,name)
{
return id + ' 'name;
}
var functionThree = funciton(id,name,age)
{
return id + ' '+name+' '+age;
}
var obj = [
{
callback: functionOne,
callbackParameters: [{key: 'id', value: 1}]
},
{
callback: functionTwo,
callbackParameters: [{key: 'id', value: 1}, {key: 'name', value:'Marc'}]
},
{
callback: functionThree,
callbackParameters: [{key: 'id', value: 1}, {key: 'name', value: 'Marc'}, {key: 'age', value: 45}]
}
]
obj.forEach(function(x){
//How do i call it with the correct keys? :(
})
最佳答案
您可以在 JS 中对函数调用 apply() 并向其中传递参数数组。因此,假设您的回调参数始终处于正确的顺序,您可以使用以下内容。
obj.forEach(function(x){
var parameters = x.callbackParameters.map(function(p) { return p.value; });
console.log(x.callback.apply(this, parameters));
})
更新了 fiddle https://jsfiddle.net/y6oh1078/1/
编辑:进一步阅读
如果您对在 JS 中操作函数的更多方法感兴趣,那么以下有关柯里化(Currying)的文章值得一读 - https://www.sitepoint.com/currying-in-functional-javascript/
关于javascript - 将 "x"参数数量设置为函数属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38784836/