This - sabrinabm94/javascript GitHub Wiki

This

O valor do this é determinado pelo contexto onde a função é chamada

Global

// this no contexto local se refere ao Window
document.write(this);  //[object Window]

Local

// this dentro de um objeto se refere a instância daquele objeto
var object = {
    func: function() {
        return this;  //[object Object]
    }
};
document.write(object.func()); 

// this dentro de vários objetos se refere ao objeto pai mais próximo
var father = {
    name: "father",
    child: {
        name: "child",
        func: function() {
            return this.name; //[object Child]
        }
    }            
}

document.write(father.child.func()); 

Para evitar confusões com o this, é indicado salvar seu valor numa variável e utilizar essa para evitar perder seu valor pelo contexto

var self = this; // guardando o valor de this
loop: function() {
    this.friends.forEach(function(friend) {
        console.log(self.name + ' knows ' + friend);
    });
}

Referências

TUDO que você deve estudar de JavaScript antes do React - YouTube