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,但我没有看到你在使用它。。。