title: Context getting lost
body: <p>Why am I losing the context with setTimeout when I do not bind "this" in the call back.<br>
  In the code below you can see onTime gets called in 3 places.<br>
  Once from inside the class. Which works fine.<br>
  Once from outside the class. Which works fine.<br>
  Once when the timer triggers a call. "this" needs the bind method.<br>
  Is there a way to force the context without the use of bind in every call back?</p>
  
  <pre><code>var MyBaseClass = function () {
      "use strict";
      this._base = {};
      this._base.baseFunc = function () {
          console.log('baseFunc called')
      };
      return this._base;
  };
  
  var TestClass =  function () {
      "use strict";
      if (TestClass.prototype._singletonInstance) {
          return TestClass.prototype._singletonInstance;
      }
      TestClass.prototype._singletonInstance = this;
      this._timer = {};
      console.log('constructor')
  };
  TestClass.prototype = new MyBaseClass();        // Set prototype to MyBaseClass
  TestClass.prototype.constructor = TestClass;   // Set constructor back to TestClass
  
  TestClass.prototype.onTime = function () {
      "use strict";
      console.log('ontime called')
      console.log(this, "&lt;--- why do i lose context")
      this.baseFunc()
  }
  TestClass.prototype.init = function () {
      "use strict";
      console.log('local')
      this.onTime()
      //this._timer = setTimeout(this.onTime.bind(this),500)// works
      this._timer = setTimeout(this.onTime, 500) // no work
  };
  
  var asdf = new TestClass()
  asdf.init()
  console.log('global')
  asdf.onTime()
  </code></pre>