这实际上是我之前问题 Access instance variable inside a function in javascript? 的后续问题.
我想在原型(prototype)方法中访问匿名函数中的实例变量。
function MyObject(){
//Instance variables
this.handler;
}
//Methods
MyObject.prototype.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();
JSFiddle http://jsfiddle.net/3cmvZ/
上面的例子只是为了阐明我如何在原型(prototype)方法中的匿名函数中访问实例变量。我已经知道 button.onclick = this.handler
有效。
最佳答案
问题不在于匿名函数在原型(prototype)中,而在于它是一个事件处理程序(不作为方法调用)。
问题是在您的 onclick 处理程序中,this
关键字绑定(bind)到 windows
对象,而不是 myObject
实例原型(prototype)被设置。您可以将对象存储在 that
变量中并创建一个闭包:
function MyObject(){
//Instance variables
this.handler;
}
//Methods
MyObject.prototype.enableHandler = function(){
var button = document.getElementById('button');
var that = this;
button.onclick = function(){
that.handler();//Should be working
}
}
var myObject = new MyObject();
myObject.handler = function(){
alert('Hello World!');
}
myObject.enableHandler();
关于javascript - 在原型(prototype)方法中的匿名函数中访问实例变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6573972/