我希望任何人都可以帮助我=)
我试着让这个例子保持简单:
function myClass(){
//some Code
}
myClass.prototype.func1 = function(){
//some Code
}
myClass.prototype.func2 = function(){
document.getElementById("myEl").onclick = function(){
this.func1 //does not work, this is only the Element...
}
}
如何调用func1?我想在func2中绑定onclick事件。
答案 0 :(得分:4)
首先,您必须保留对当前对象的引用。正如您已经注意到的,在事件处理程序中,this
引用了DOM元素。您可以使用
var self = this;
其次,您必须调用函数:
self.func1();
完整示例:
myClass.prototype.func2 = function(){
var self = this;
document.getElementById("myEl").onclick = function(){
self.func1();
};
}
在较新的浏览器中,您还可以使用.bind()
[MDN]明确定义this
应引用的内容(有关其他浏览器的填充程序,请参阅MDN文档):
document.getElementById("myEl").onclick = this.func1.bind(this);
答案 1 :(得分:1)
在onclick
函数中,this
值绑定到被单击的元素。您需要保留func2内的this
的副本(参考):
myClass.prototype.func2 = function(){
var self = this; //keep a reference to the this value
document.getElementById("myEl").onclick = function(){
self.func1();
}
}