2014-02-27 62 views
-2

我想要使用JavaScript获取上次执行的函数的名称,下面的代码对我有用,但需要找到其他方法可用?请帮我:如何使用JavaScript获取上次执行的函数名称

var fname; 
function fn() 
{ 
     fname="fn()"; 
} 

function fn1() 
{ 
     fname="fn1()"; 
} 

function fexecute() 
{ 
     setTimeout(fname, 0); 
} 

我想最后执行的函数名,当我在那个时候电话呼叫fexecute()函数最后执行的功能。

+0

你最后想要什么执行功能?并行回调? – Andrew

+0

我不会宽恕它,但你可以改变它'setTimeout(fname +'()',0);'确保你阅读使用eval之前使用它的问题! – Tibos

回答

2

如果要执行字符串中的函数名称,除了将字符串传递给setTimeout()外,还必须执行一些操作。最好的选择是直接保存对函数的引用,而不是字符串名称。

var lastFunc; 
function fn() 
{ 
     lastFunc=fn; 
} 

function fn1() 
{ 
     lastFunc=fn1; 
} 

function fexecute() 
{ 
     // execute previous function after a short timer 
     setTimeout(lastFunc, 0); 
} 

如果您不需要setTimeout(),则可以执行这样的最后一个函数:

function fexecute() 
{ 
     // execute previous function 
     lastFunc(); 
} 
+0

我已经使用这种类型,但我想要任何其他类型的方法。 –

2

只需使用arguments.callee.name

var fname; 

function anyFunction() { 
    fname = arguments.callee.name; 
} 

function anyOtherFunction() { 
    fname = arguments.callee.name; 
} 

调用的函数通常像anyFunction();anyOtherFunction();

+0

我尝试这个,但我得到错误 –

+0

你得到什么错误?它对我的工作很好 – SajithNair

+0

参数未定义 –

相关问题