你如何在JavaScript中找到调用者对象

时间:2011-11-04 09:40:14

标签: javascript javascript-events

我有

 var X={
     method1 : function(){
                A();
              },
     method2 : function(){
                A();
              },

    }

function A(){
       console.log('im from methodNAME of ObjNAME ');
}

如何找到该函数正在调用的方法对象的名称。?

2 个答案:

答案 0 :(得分:5)

答案 1 :(得分:-1)

您定义并调用A函数的方式是调用A的对象将是DOMWindow对象 - 即全局对象。

至于X调用它的方法(这是methodNAME的意思,我假设) - 在你定义方法的方式中(定义一个匿名函数并赋值给财产)你将无法得到这个名字。

您是否已将此X对象声明为:

var X = {
    method1: function method1() {
        A();
    },
    method2: function method2() {
        A();
    },

}

和您的A功能如下:

function A() {
    console.log(A.caller);
}

然后打电话:

X.method1();
X.method2();

将产生如下控制台输出:

function method1() {
        A();
    }

function method2() {
        A();
    }

然后您可以解析并检索调用方法的名称。

或者如果你这样定义A

function A() {
    console.log(A.caller.prototype);
}

然后输出将显示:

method1
method2

其中method1method2是原型对象 - 因此您还必须执行一些操作。

编辑:修复了错误的复制/粘贴= A.caller.prototype - > A.caller。