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参数并消除open参数,它是回调函数本身:

function invokeCallback(callback) {
    var params = Array.prototype.slice.call(arguments,1);
    return callback.apply(this,params);
}

猜你在找的JavaScript相关文章