javascript - 使用未知数量的参数调用回调

标签 javascript

在 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.applyFunction.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/

相关文章:

javascript - yesod 在 javascript 中填写特定的表单字段

javascript - 根据值对二维数组进行排序

javascript - 树状结构,显示结构中单击元素的文本

javascript - 使用手动硬编码模板/组件的可视化构建器

javascript - 遍历 ajax 响应元素

javascript - AngularJS 指令传递字符串

javascript - 什么类型的 Relay mutator 配置适合插入新记录?

javascript - JSON.parse() 可以指示有效的 JSON 格式吗?

javascript - 使用 Array.map 作为 foreach 是一个好的做法吗?

javascript - JavaScript 中的回调函数如何接收其参数值