我正在尝试理解我的方法中的“this”引用是什么,该方法被声明为:
(根据要求更正,但仍无效)
Myclass = function() {
this.focused = function() {
alert("caller = " + this.focused.caller);
}
}
var obj = new Myclass();
它正在显示:
this.focused is undefined
那么,我怎样才能获得此函数的调用者?
答案 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);