0

我有一个像这样的构造函数对象。

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元素,而不是当前实例对象,

那么我如何在“fnClick”中传递“ this ”的引用..?

jsfiddle链接

4

2 回答 2

2

this.fnClick.bind(this)对于不支持绑定的浏览器,使用or:

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

于 2012-12-05T06:04:49.747 回答
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.

于 2012-12-05T06:00:42.837 回答