我有一個自定義函數,我們稱之爲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