title: this returns different between browsers
body: <p>I've stumbled upon an issue I can't get my head around, and I hope some smart people here might enlighten me :-)</p>
  
  <p>The following CoffeeScript using RequireJs gives me a problem with scope. It Works perfectly with any other browser expect for our old friend Internet Explorer (even in latest version).</p>
  
  <p>Problem being that <code>this.stop()</code>, or rather just <code>this</code> gives me <code>window</code> in Internet Explorer and the object where all the code bellow live in when in other browsers.</p>
  
  <p>So Internet Explorer tries to do <code>window.stop()</code>, which obviously won't work. Whilst other browsers just run the <code>stop()</code> method in the scope it should. Why is this?</p>
  
  <p>Does it has to do with the Array prototype function <code>.push()</code> working in some other way in Internet Explorer? Or is it just a bug? Please enlighten me?</p>
  
  <pre><code>define ['require', 'cs!scroller', 'cs!router', 'jquery', 'cs!menu', 'cs!magicbox', 'newsflash', 'swiper', 'time', 'cs!ads'], (require, Scroller, Router, $, Menu, Magicbox, Newsflash, Swiper, Time) -&gt;
  
    start: -&gt;
  
      Router.addRouterEvents()
  
      window.Looper = []
  
      window.Looper.push () -&gt;
        [this.stop(), Router.start(), Scroller.start(), Newsflash(), Swiper(), Time()]
  
      for func in window.Looper
        func()
  
    stop: -&gt;
      $('*').off()
  </code></pre>
  
  <p>Here is the same code compiled to JavaScript (for the less CoffeeScript versed among us, since I do not except the problem lies with CoffeeScript itself):</p>
  
  <pre><code>// Generated by CoffeeScript 1.7.1
  (function() {
    define(['require', 'cs!scroller', 'cs!router', 'jquery', 'cs!menu', 'cs!magicbox', 'newsflash', 'swiper', 'time', 'cs!ads'], function(require, Scroller, Router, $, Menu, Magicbox, Newsflash, Swiper, Time) {
      return {
        start: function() {
          var func, _i, _len, _ref, _results;
          Router.addRouterEvents();
          window.Looper = [];
          window.Looper.push(function() {
            return [this.stop(), Router.start(), Scroller.start(), Newsflash(), Swiper(), Time()];
          });
          _ref = window.Looper;
          _results = [];
          for (_i = 0, _len = _ref.length; _i &lt; _len; _i++) {
            func = _ref[_i];
            _results.push(func());
          }
          return _results;
        },
        stop: function() {
          return $('*').off();
        }
      };
    });
  
  }).call(this);
  </code></pre>