Hacker News new | ask | show | jobs
by cunthorpe 1807 days ago
Untechnically speaking: Arrow functions preserve the `this` in their declaration point, whereas regular functions change `this` if they're called as methods.

    class Foo {
      thisCouldBeAnything() {return this}
      thisIsDefinitelyFoo = () => this
    }
    
    new Foo().thisCouldBeAnything.call('use me')
    // 'use me'
    
    new Foo().thisIsDefinitelyFoo.call('unused')
    // Foo
Since the intention is often to keep `this` to refer to the class, people have been binding every single method in the class constructor, but this is no longer necessary thanks to arrow functions.