获取函数bind中对象的引用作为js中的事件。

时间:2012-12-05 05:55:57

标签: javascript oop object

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

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

2 个答案:

答案 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