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)バインドをサポートしていないブラウザーの場合は、またはを使用します。

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 に答える