谁在调用我的javascript方法?

谁在调用我的javascript方法?,javascript,Javascript,我试图理解我的方法中的“this”引用是什么,该方法声明如下: (按照要求的答案更正,但仍不起作用) 它显示: this.focused is undefined 那么,如何获取此函数的调用者?您可以使用: var name = arguments.callee.caller.name; 您可以使用: var name = arguments.callee.caller.name; 我调试它的方法是添加一行 控制台信息(此) 如果您正在使用FireBug进行开发,它将立即向您展示正在发生的

我试图理解我的方法中的“this”引用是什么,该方法声明如下:

(按照要求的答案更正,但仍不起作用)

它显示:

this.focused is undefined
那么,如何获取此函数的调用者?

您可以使用:

var name = arguments.callee.caller.name;
您可以使用:

var name = arguments.callee.caller.name;

我调试它的方法是添加一行

控制台信息(此)


如果您正在使用FireBug进行开发,它将立即向您展示正在发生的事情。“this”是谁取决于调用它的位置-它可能是“window”对象。

我调试它的方法是添加一行

控制台信息(此)


如果您正在使用FireBug进行开发,它将立即向您展示正在发生的事情。“this”是谁取决于从何处调用-它可能是“window”对象。

如何:

obj = new Myclass() {

    this.focused = function() {
        alert("caller = " + Function.caller.name);
    }
}
那么:

obj = new Myclass() {

    this.focused = function() {
        alert("caller = " + Function.caller.name);
    }
}

如果要获得预期的结果,必须正确定义对象

Myclass = function() {
  this.focused=function() {
    alert("caller = " + this.focused.caller);
  };
}
obj = new Myclass();

如果要获得预期的结果,必须正确定义对象

Myclass = function() {
  this.focused=function() {
    alert("caller = " + this.focused.caller);
  };
}
obj = new Myclass();

看起来问题出在事件注册上,使用

window.onfocus = self.focused;
它不起作用,但有一个

var self = this;
window.addEventListener("focus", function() { self.focused(); }, false);
它工作得很好

我只是想知道为什么它也不适用于:

var focused = this.focused;
window.addEventListener("focus", function() { focused(); }, false);

看起来问题出在事件注册上,使用

window.onfocus = self.focused;
它不起作用,但有一个

var self = this;
window.addEventListener("focus", function() { self.focused(); }, false);
它工作得很好

我只是想知道为什么它也不适用于:

var focused = this.focused;
window.addEventListener("focus", function() { focused(); }, false);


这是无效的javascript。花括号不能立即跟随函数调用。@Mike Samuel出于某种原因,它在这里工作,我在Xul应用程序中使用此javascript。我唯一不能做的就是显示某个函数的调用方(看起来只针对事件)。这不是有效的javascript。花括号不能立即跟随函数调用。@Mike Samuel出于某种原因,它在这里工作,我在Xul应用程序中使用此javascript。我唯一不能做的就是显示某个函数的调用者(看起来只针对事件)。它没有打印任何内容。如果我打印
arguments.callee.caller
它会打印
null
。现在,从哪里调用它,我不知道。。这就是我想要发现的,它什么也没印出来。如果我打印
arguments.callee.caller
它会打印
null
。现在,从哪里调用它,我不知道。。这就是我试图发现的东西。“取决于它从哪里被调用”,这就是我试图发现的东西……)“取决于它是从哪里被调用的”,这正是我试图发现的使用函数本身的名称:这就是我所做的,它打印出
这个。focused是未定义的
@Tom Brito那是我关于这个主题的知识的终点,抱歉。使用函数本身的名称:这就是我所做的,它打印出
这个。focused是未定义的
@Tom Brito那是我关于这个主题的知识的终点,抱歉。它被更正了,也使用了
var obj=new Myclass
,但是它仍然打印一个错误
this.focused是未定义的
它被更正了,也使用了
var obj=new Myclass
,但是它仍然打印一个错误
this.focused是未定义的