很多时候,我发现自己使用了一个回调函数,并且我没有方便的文档,并且很高兴看到所有要传递给该回调函数的参数。
// 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 );
我怎样才能确定传入的args是什么?
注意:当代码本身被混淆和缩小时(如同许多js框架一样),查看源代码可能是无用的
答案 0 :(得分:28)
要在不破坏功能的情况下获取参数列表,请以这种方式覆盖回调函数:
var original = callback;
callback = function() {
// Do something with arguments:
console.log(arguments);
return original.apply(this, arguments);
};
this
。注意:此方法适用于大多数情况。虽然存在此方法失败的边缘情况,包括:
Object.defineProperty
使用writable:false
答案 1 :(得分:8)
可能就像
一样容易function callback() {
console.log(arguments);
}
每个函数都提供在自动arguments
集合中调用它的参数。
答案 2 :(得分:1)
这种推车不是这种马吗?
您的函数需要回调。这是使用你的函数的方法,它应该知道回调应该接受什么参数。
答案 3 :(得分:0)
你甚至可以告诉它使用[functionName]来获取哪个函数的args .arguments:
(function(arg1, arg2, agr3){
console.log('args are:', arguments);
return function fn(){
function m(){
console.log(
'fn.arguments:', fn.arguments,
'm.arguments:', m.arguments,
'argumentsX:', arguments
);
};
m('mArg1', 'mArg2', 'mArg3', 'mArg4');
};
})
(1, 2, Math.PI) // invoke closure
('fnArg1', 'fnArg2', 'fnArg3', 'fnArg4'); // invoke "fn"
每个函数def都会将arguments关键字重写为该范围的btw(如“argumentsX
”日志所示)。