История изменений
Исправление crutch_master, (текущая версия) :
function call(...args) {
let values = args.pop();
let ret = args.pop()(...values);
args.reverse().forEach(f=>{
ret = f(ret);
});
return ret;
}
//test:
var f = function(v) {return v += "f "};
var f1 = function(v) {return v += "f1 "};
var f2 = function(v) {return v += "f2 "};
var f3 = function(v) {return v += "f3 "};
var x = "Test ";
call(f, f1, f2, f3, [x]) === f(f1(f2(f3(x))))
//true ("test f3 f2 f1 f ")
Исходная версия crutch_master, :
function call() {
let args = Object.values(arguments);
let values = args.pop();
let ret = args.pop()(...values);
args.reverse().forEach(f=>{
ret = f(ret);
});
return ret;
}
//test:
var f = function(v) {return v += "f "};
var f1 = function(v) {return v += "f1 "};
var f2 = function(v) {return v += "f2 "};
var f3 = function(v) {return v += "f3 "};
var x = "Test ";
call(f, f1, f2, f3, [x]) === f(f1(f2(f3(x))))
//true ("test f3 f2 f1 f ")