javascript调用特权方法
如果我在onkeypress之外调用killSwitch(),我将导致一个错误。 但是在onkeypress函数中,我工作得很好。 为什么?javascript调用特权方法,javascript,Javascript,如果我在onkeypress之外调用killSwitch(),我将导致一个错误。 但是在onkeypress函数中,我工作得很好。 为什么? // this works fine var ClassA = function() { var doc = document; // killSwitch(); doc.onkeypress = function(e){ killSwitch(); } this.killSwitch = function(){ a
// this works fine
var ClassA = function()
{
var doc = document;
// killSwitch();
doc.onkeypress = function(e){ killSwitch(); }
this.killSwitch = function(){ alert('hello world'); }
}
var myClass = new ClassA();
您无法调用killSwitch
,因为您将该方法定义为对象实例的属性(this.killSwitch
)
您不能在按键
事件中使用此
,因为它将引用文档
,您必须存储此
值:
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();
无法调用
killSwitch
,因为已将该方法定义为对象实例的属性(this.killSwitch
)
您不能在按键
事件中使用此
,因为它将引用文档
,您必须存储此
值:
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();
尝试:
通过这种方式,您可以在ClassA
函数中定义killSwitch
函数,创建一个闭包,它在类内外都可用。尝试:
这样你就在
ClassA
函数中定义了killSwitch
函数,创建了一个闭包,它在类内外都可用。老鼠,你比我快了30秒+回答得好老鼠,你比我快了30秒+回答得好