如何获取回调函数的所有参数?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (15)

通常,我发现自己使用回调函数,而且手头没有它的文档,如果能看到传递给该回调函数的所有参数,那就太好了。

// callback is a function that I don't know the args for...
// and lets say it was defined to be used like: callback(name, number, value)
something.doSomething( callback );

我怎么能确定是什么ARG传入了它呢?

注意:当代码本身被混淆和缩小时,查看源代码可能没有帮助(就像许多js框架一样)

提问于
用户回答回答于

若要获取参数列表而不破坏功能,请以这种方式覆盖回调函数:

var original = callback;
callback = function() {
    // Do something with arguments:
    console.log(arguments);
    return original.apply(this, arguments);
};
  1. 背景,this被保存下来。
  2. 所有参数都正确传递。
  3. 返回值被正确传递。

注意:这种方法在大多数情况下有效。尽管在某些情况下此方法会失败,包括:

  • 只读属性(例如,使用Object.defineProperty带着writable:false)
  • 当getter/setter不对称时,使用getter/setter定义的属性。
  • 宿主对象和插件API:例如。闪存和ActiveX。
用户回答回答于

像这样

function callback() {
    console.log(arguments);
}

每个函数都提供自动机中调用的参数arguments

扫码关注云+社区