如果我在 onkeypress 之外调用 killSwitch(),我会导致错误。 但是在 onkeypress 函数内部,我工作得很好。 为什么?
//这很好用
变量 ClassA = 函数()
{
var doc = 文档;
//killSwitch();
doc.onkeypress = function(e){ killSwitch(); }
this.killSwitch = function(){ alert('hello world'); }
}
var myClass = new ClassA();
最佳答案
您不能调用 killSwitch
,因为您将该方法定义为对象实例 (this.killSwitch
) 的属性。
你不能在 keypress
事件中使用 this
,因为它会引用 document
,你必须存储 这个
值:
var ClassA = function() {
var doc = document,
instance = this; // store reference to `this`
doc.onkeypress = function(e){ instance.killSwitch(); };
this.killSwitch = function(){ alert('hello world'); };
}
var myClass = new ClassA();
关于javascript调用特权方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2885387/