我有一个像这样的构造函数对象。
var Cons = function(me){
this.name= me;
this.ele = document.getElementById("element");
this.ele.addEventListener("click",this.fnClick,false);
}
并将一些方法扩展为原型
Cons.prototype.getme= function(){
return this.me;
}
Cons.prototype.fnClick= function(){
alert(this.getme())
}
var initZ = new Cons("test");
所以我的问题是当im“fcClick”作为绑定函数执行时“this”将引用绑定的HTML元素,而不是当前的实例Object,
那么如何在“fnClick”中传递“ this ”的引用??
jsfiddle link
答案 0 :(得分:2)
对于不支持bind的浏览器使用this.fnClick.bind(this)
或
var Cons = function(me){
this.name= me;
this.ele = document.getElementById("element");
var self = this;
function handler() {
self.fnClick(arguments);
}
this.ele.addEventListener("click", handler, false);
}
请参阅http://jsfiddle.net/Fy5ZV/1/(getme()
返回this.name
)
答案 1 :(得分:1)
您可以使用bind()
...
var Cons = function(me){
this.name= me;
this.ele = document.getElementById("element");
this.ele.addEventListener("click",this.fnClick.bind(this),false);
}
这样可以保证将ThisBinding
设置为调用环境的this
。