将此参数绑定到命名参数

时间:2015-04-29 12:26:25

标签: javascript jquery prototype

如果我的代码结构如下:

 Thing.prototype = {

    doSomething: function() {
      $(selector).click(this.handleClick.bind(null, this));
    },

    handleClick: function(self, event) {
      console.log(this); //Window
      console.log(self); //Thing
    }

 }

如何将Thing this上下文绑定到self参数,并仍保持this对象的行为,就好像没有使用bind方法绑定参数一样?

注意:我知道我可以绑定this并使用e.originalEvent.target来获取我想要的行为,但我只是好奇是否有其他方式

我希望我能够实现我想要达到的目标,如果有些含糊不清就留下评论。

1 个答案:

答案 0 :(得分:1)

  

如何将Thing这个上下文绑定到self参数并仍然保持this对象的行为,好像没有使用bind方法绑定参数一样?

您不会使用bind,因为您希望this是动态的。代替:

doSomething: function() {
  var self = this;
  $(selector).click(function(e) {
      return self.handleClick.call(this, self, e);
  });
},

handleClick期间,this将引用被点击的元素,第一个参数将是Thing实例,第二个参数将是事件:

handleClick: function(self, event) {
  console.log(this);  // The clicked element
  console.log(self);  // The Thing
  console.log(event); // The event
}