2011-07-18 101 views
2

我知道我可以通过使用Internet Explorer是否支持arguments.callee.name?

arguments.callee.caller.name 

获得当前正在运行的函数的名称,但这并不在Internet Explorer的 (任何版本)的工作。什么是正确的跨浏览器语法?是否存在解决方法?

+2

你不能再这样做了支持。它已被弃用。依靠这是糟糕的代码。重构它 – Raynos

+0

有用的知识 - 谢谢雷诺斯! – mate64

+1

即使我后悔,雷诺斯是对的。 'arguments.callee'和'.caller'都被弃用。 ECMA委托人认为,这些参考文献造成的伤害远远超过了好处。任何支持“严格模式”的浏览器在使用这些属性时都会引发异常。 – jAndy

回答

2

除了arguments.callee已被有效逐步淘汰,并且在ECMAScript 5严格模式下完全没有的事实,主要问题是IE中的Function对象没有name属性。它在一些浏览器中实现,特别是Firefox和最近的基于WebKit的浏览器,但是不是标准的,并且确实没有标准的方法来获得函数名。

这个离开你的唯一选择是试图从函数的字符串表示中解析名字,这是不是一个好主意。这里有一个很长的讨论:http://groups.google.com/group/comp.lang.javascript/browse_frm/thread/b85dfb2f2006c9f0

0

你可以试试这个:

arguments.callee.caller $名

在IE中使用$名称

相关问题