1

我试图在另一个实例方法的事件处理程序中调用实例方法,但我得到的函数未定义,我认为这是因为在事件处理程序中“this”指的是 DOM 元素而不是实例:

function MyObject(something) {
   this.something = something;
   this.value = 'abc';
}

MyObject.prototype.Init = function() {

  $(this.something).click(function() {
     this.DoSomething();
  });
};

MyObject.prototype.DoSomething = function() {
 //do something
};

有没有办法让“this”指向实例?

4

1 回答 1

3

定义另一个名称不是其他变量的变量,this并为其分配您希望在内部函数中引用的上下文:

MyObject.prototype.Init = function() {
  var scope = this;
  $(this.something).click(function() {
     scope.DoSomething();
  });
};
于 2013-06-15T13:04:28.103 回答