this v arrow functions

Tohle jsem viděl nesčetněkrát. Tohle vám skutečně fungovat nebude 🙂

// treba index.js
const a = {
    num: 9,
    inc: () => {
        this.num++;
    }
};

a.inc();

Arrow functions jsou super, ale je dobré vědět jak fungují… Respektive vědět minimálné to, že nemají this, mino jiné, a proto se neprovede this.num++ nad num definovaném v objektu a, jak by se na první pohled mohlo zdát. this ukazuje na parent, tedy v tomto případě global, kde žádný num není 🙂

Správně tedy

// treba index.js
const a = {
    num: 9,
    inc: function() {
        this.num++;
    }
};

a.inc();

Pěkný článek popisující detailně chování this kdekoliv v JS.