谁在调用我的javascript方法?

时间:2011-01-07 19:13:44

标签: javascript

我正在尝试理解我的方法中的“this”引用是什么,该方法被声明为:

(根据要求更正,但仍无效)

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

它正在显示:

this.focused is undefined

那么,我怎样才能获得此函数的调用者?

5 个答案:

答案 0 :(得分:2)

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

console.info(本)

如果您正在使用FireBug进行开发,它会立即向您显示正在发生的事情。谁“这个”取决于从哪里调用它 - 它可能是“窗口”对象。

答案 1 :(得分:1)

您可以使用:

var name = arguments.callee.caller.name;

答案 2 :(得分:0)

怎么样:

obj = new Myclass() {

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

答案 3 :(得分:0)

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

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

答案 4 :(得分:0)

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

window.onfocus = self.focused;

它不起作用,但是

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

效果很好..

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

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