javascript调用特权方法

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

如果我在onkeypress之外调用killSwitch(),我将导致一个错误。 但是在onkeypress函数中,我工作得很好。 为什么?

// 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秒+回答得好