两部分问题:


如何从对象方法获取function.caller
如何使用该值实际调用函数。


例:

foo = {
    bar: function() {console.log(bar.caller);}
}


>> SyntaxError: function statement requires a name

范例2:

[bar.caller]();吗?

提前致谢

最佳答案

要获取呼叫者(如果存在),请使用以下命令:

var caller = arguments.callee.caller;


要使用它,您必须首先检查它是否存在:

if(caller)
    caller();


例:



function foo(param){
  if(param == 5) return console.log(param);

  var caller = arguments.callee.caller;
  if(caller)
    caller(param + 1);
}

function bar(param){
  foo(param);
}

foo(3); // won't log anything (no caller and param != 5)

bar(3); // will cause a recursion until param == 5 then logs it.

关于javascript - 使用`function.caller`,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41926159/

10-12 14:16