我想改进我的调试功能,以包含有关调用debug()的函数的信息。
我使用 arguments.callee.caller.name
(debug.caller.name
更精确)来获取调用debug()的函数的名称。
有没有办法获取调用函数的参数?
假设我有这个例子:
function test(paramOne, paramTwo){
debug();
}
和
function debug(){
console.log("function "+debug.caller.name+": ");
console.log("parameter: ");
console.log(debug.caller.parameter); // does not work
//(i expect an array at this point)
}
答案 0 :(得分:2)
您应该使用debug.caller.arguments
代替debug.caller.parameter
答案 1 :(得分:1)
function.name是ECMA 6的实验技术 - 它在所有浏览器中都不起作用。 arguments.callee已弃用,但未被调用者
function test (param1,param2)
{
debug ();
}
function debug ()
{
var caller=debug.caller;
//-- get function name
var RegExp_FuncName=new RegExp ("function.*(?=\\()");
var RegExp_Space=new RegExp (" ","g");
var name=caller.toString().match (RegExp_FuncName);
name=name[0].replace (RegExp_Space,"");
name=name.slice (8,name.length);
if (name=="") name="anonymous";
//-- get parameters
var parameters=caller.arguments;
var i,l=parameters.length, output;
output=name;
for (var i=0;i<l;i++)
output+=" | "+parameters[i];
alert (output);
}
test (1,2);