Consider this piece of code:
var states = {
  "default" : {
    foo: "foo",
    mouseReleased: function() {
      console.log("Mouse released");
      this.foo = "bar";
    }
  }
}
var canvas = function(states) {
  return {
    states: states,
    currentState: "default",
    draw: function() {
      if (this.states[this.currentState].mouseReleased != undefined) {
        window.mouseReleased = this.states[this.currentState].mouseReleased
      }
    }
  }
}
When I release the mouse, the console shows "Mouse released", but states.default.foo does not change to bar. Is there a way to not use window.mouseReleased's this? I've read a little bit about bind, but I am not sure what it means. Am I searching in the right place?
 
    