javascript - 有没有办法在被调用者中获取调用者函数的名称?

标签 javascript jquery

<分区>

Possible Duplicate:
Javascript how do you find the caller function?

今天早上我正在尝试使用 javascript/jQuery 并 try catch 当前正在执行的函数的调用者名称。

因此在下面的示例中,日志将显示 runMe 作为调用方,showMe 作为被调用方。

jQuery(document).ready(function($) {

  function showMe() {
    // should log the runMe as the caller and showMe as callee
    console.log('Callee: ',arguments.callee)
    console.log('Caller: ',arguments.caller);
  }

  function runMe() {
    // getting executed as a button is pressed.
    showMe();
  }

  $('a').bind('click', function(e) {
    e.preventDefault();
    runMe();
  });

});

以上显然行不通,因此我向大家提问。

有没有什么好的方法可以获取上面例子中的caller?

请注意:我知道我可以得到 runMe 的被调用者并将其作为参数传递给 showMe 但这个问题的目标是解决方案不需要将调用方“手动”传递到函数中。

是否有理由反对这样做?

最佳答案

您过去可以执行 arguments.caller.name,但这是 deprecated in Javascript 1.3 .

arguments.callee.caller.name(或只是showMe.caller.name)是another way to go .这是非标准的,在严格模式下不受支持,但目前在所有主要浏览器中均受支持(ref)。

关于javascript - 有没有办法在被调用者中获取调用者函数的名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5750895/

相关文章:

javascript - { ...obj1, obj2 } 到底做什么

javascript - 回调如何在 Angularjs 中与 $scope 一起使用

javascript - 如何使用PHP预览视频上传前后?

javascript - 奇怪的行为 - 序列化

javascript - 初始化后更新 jQuery 插件设置

Jquery children() 不透明动画

javascript - 为什么我的 jest.mock 中的 Promise reject() 会转到 then() 而不是 catch()?

Javascript/Ember 语法 '%@'

javascript - firefox 将 div 向右推

javascript - 在页面之间移动时创建变量和 'storing it',jquery