javascript中函数内的Access实例变量?

javascript中函数内的Access实例变量?,javascript,oop,Javascript,Oop,如何以最简单的方式访问函数中的实例变量 function MyObject(){ //Instance variables this.handler; //Methods this.enableHandler = function(){ var button = document.getElementById('button'); button.onclick = function(){ t

如何以最简单的方式访问函数中的实例变量

function MyObject(){

     //Instance variables
     this.handler;

     //Methods
     this.enableHandler = function(){
         var button = document.getElementById('button');
         button.onclick = function(){
             this.handler();//Is not working
         }
     }

}
var myObject = new MyObject();
myObject.handler = function(){
    alert('Hello World!');
}
myObject.enableHandler();
注意,我可以设置
button.onclick=this.handler。这只是一个例子。主要问题是如何访问该函数中的
this.handler

function MyObject(){

     //Instance variables
     this.handler;

     //Methods
     this.enableHandler = function(){
         var button = document.getElementById('button');
         button.onclick = function(){
             this.handler();//Is not working
         }
     }

}
var myObject = new MyObject();
myObject.handler = function(){
    alert('Hello World!');
}
myObject.enableHandler();
我还可以定义一个新变量
var handler=this.handler
来访问
this.handler
。但是如果更改
handler
,那么
这个.handler
也会更改吗

function MyObject(){

     //Instance variables
     this.handler;
     var that = this;  //notice change
     //Methods
     this.enableHandler = function(){
         var button = document.getElementById('button');
         button.onclick = function(){
             that.handler();//Is not working  notice the change
         }
     }

}
var myObject = new MyObject();
myObject.handler = function(){
    alert('Hello World!');
}
myObject.enableHandler();

如果将其分配给外部函数范围内的变量,则会将其传递给内部函数范围链。在您的内部函数中,引用这指的是内部函数,引用您分配给它的变量,在我们的例子中是“that”,引用回该对象。

如果我更改
that.handler
是否也会更改
this.handler
?是的,但您还需要执行var=this;作业,看看我在评论中的两个地方,你提到了jQuery,但我没有看到你在使用它。。。