【问题标题】:Does Internet Explorer support arguments.callee.name?Internet Explorer 是否支持 arguments.callee.name?
【发布时间】:2019-09-21 05:11:27
【问题描述】:

我知道我可以通过使用获取当前正在运行的函数的名称

arguments.callee.caller.name

但这在 Internet Explorer 中不起作用(任何版本)。什么是正确的跨浏览器语法?是否存在解决方法?

【问题讨论】:

  • 你不能再这样做了。它已被弃用。依赖这个是糟糕的代码。重构它
  • 很高兴知道 - 谢谢 raynos !
  • 即使我后悔,Raynos 也是对的。 arguments.callee.caller 均已弃用。 ECMA 委员会认为这些参考资料弊大于利。任何支持strict mode 的浏览器在使用这些属性时也会抛出异常。

标签: javascript jquery cross-browser mootools


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    你可以试试这个:

    arguments.callee.caller.$name

    在 IE 中它支持 $name

    【讨论】:

      猜你喜欢
      • 2011-05-27
      • 1970-01-01
      • 1970-01-01
      • 2023-04-04
      • 1970-01-01
      • 2023-03-26
      • 2011-07-03
      • 2023-04-03
      • 1970-01-01
      相关资源
      最近更新 更多