我经常需要在函数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/

07-24 18:05
查看更多