我经常需要在函数f
中检索指向f
的方法的名称。例如。假设我们有一个getMethodName(obj, methodFunction)
函数,该函数使用foreach
上的obj
来查找作为methodFunction
链接的属性:
obj = {
foo : function() {
var myName = getMethodName(obj, arguments.callee); // "foo"
}
}
如何在不赞成使用
arguments.callee
的严格模式中执行此操作? 最佳答案
你做不到而且您不应该首先这样做,这是不可思议的,您的功能不应该依赖于它的调用者等。更改设计以使其再次起作用。arguments.callee
和.caller
不仅因为样式不好而被删除,还因为它们破坏了优化。即内联,如果您既依赖调用者也不依赖函数,则无法内联某些东西,因为代码可能只是放在某个地方,而函数周围没有。
阅读:http://whereswalden.com/2010/09/08/new-es5-strict-mode-support-now-with-poison-pills/