title: Binding different this scope to ES6 => function operator
body: <p>After experimenting with inheriting contexts with the => feature that ES6 gives us I noticed that the this context can never be changed.
  Example: </p>
  
  <pre><code>var otherContext = {
    a: 2
  };
  function foo() {
    this.a = 1;
  
    this.bar = () =&gt; this.a;
  
  }
  
  var instance = new foo;
  instance.bar(); // returns 1
  instance.bar.bind(otherContext)(); // returns 1
  </code></pre>
  
  <p>Without the => operator and using the function keyword:</p>
  
  <pre><code>function foo() {
    this.a = 1;
  
    this.bar = function () {
      return this.a;
    }
  }
  var instance = new foo;
  instance.bar(); // returns 1
  instance.bar.bind(otherContext)(); // returns 2
  </code></pre>
  
  <p>Therefore, if we receive a function from an external call or just have a function in a variable, how can we be sure if we are going to be able to bind a different this to it or if it will just inherit it from somewhere?</p>
  
  <p>It sounds dangerous that javascript does not tell you anything, one might fall for a VERY subtle and difficult bug.</p>