如何以最简单的方式访问函数内的实例变量?
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
?
我还可以定义一个新变量var handler = this.handler
来访问this.handler
。但是,如果更改handler
this.handler
也会发生变化吗?
答案 0 :(得分:10)
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();
如果将其赋值给外部函数范围内的var,则将其传递给内部函数作用域链。在你的内部函数中,引用它指的是内部函数,引用你赋给它的变量,在我们的例子中,“that”,引用回那个对象。