var self = this?

Using instance methods as callbacks for event handlers changes the scope of this from “My instance” to “Whatever just called the callback”. So my code looks like this

function MyObject() {
  this.doSomething = function() {
    ...
  }

  var self = this
  $('#foobar').bind('click', function(){
    self.doSomethng()
    // this.doSomething() would not work here
  })
}

It works, but is that the best way to do it? It looks strange to me.

8 Answers
8

Leave a Comment