作者热门文章
- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
在 javascript 中有没有一种方法可以使用未知数量的参数调用回调?
例如,如果这是我们的调用方法:
function invokeCallback(callback, params) {
return callback.invoke(params);
}
如果这些是我们的示例回调方法:
function action() {
doSomeAction();
}
function greet(msg) {
console.log(msg);
}
function nameage(name, age) {
var msg = 'My name is ' + name + ' and my age is ' + age;
console.log(msg);
}
如果我们可以像这样轻松地调用它们:
invokeCallback(action);
invokeCallback(greet, 'Hello!');
invokeCallback(nameage, 'Bob', 20);
那就太好了。
这样的事情可能吗?
最佳答案
正如其他答案中已经提到的,Function.prototype.apply和 Function.prototype.call是您要查看的两种方法。它们的操作方式略有不同 - apply 将参数作为单个数组,而 call 将它们作为单独的参数。
您可能希望探索使用此技术的相关概念是 currying .
关于您的示例,您应该考虑从函数定义中删除 params
参数并删除作为回调函数本身的起始参数:
function invokeCallback(callback) {
var params = Array.prototype.slice.call(arguments, 1);
return callback.apply(this, params);
}
关于javascript - 使用未知数量的参数调用回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19979122/
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: Combination of List> 我有多个列表,可以是 2 个或 3 个,最多 10 个列表,有多个
我是一名优秀的程序员,十分优秀!