我有一个自定义函数,我们称之为func
。Javascript函数参数评估
function func(someArg) {
return Math.random() + someArg;
}
我有Thing
对象以及这些对象的数组都具有某种功能exec
var Thing = function() {
this.exec = function(n) {
console.log(n);
}
}
var arr = [new Thing(), new Thing(), new Thing()];
现在,我希望能够执行功能的阵列中的所有元素,应该为每个函数执行评估该函数的参数。一个例子:
function execAll(arg) {
arr.forEach(function(e) { e.exec(arg); });
}
execAll(func(10));
这返回3次相同的值,因为func()
针对的execAll
呼叫计算一次,然后在每一个e.exec(arg)
使用。我如何实现func
对每个调用e.exec
进行评估?
UPDATE
这将是非常好的,如果有同时使用的是支持的解决方案:
execAll(someFunc()); // invoked with a function
execAll(20); // invoked with a plain value
全段在这里:
var Thing = function() {
this.exec = function(n) {
console.log(n);
}
}
var arr = [new Thing(), new Thing(), new Thing()];
var func = function(someArg) {
return Math.random() + someArg;
}
function execAll(arg) {
arr.forEach(function(e) { e.exec(arg); });
}
execAll(func(10));
坏主意。使用两种不同的'exec'方法来做不同的事情。 – Bergi
是的你是对的。我应该重新考虑我的整个设计。不过,我接受了Royi的答案,因为它首先解决了这个问题。 – Jonas