Getters e setters Javascript - problema de recursão

Alguém pode me ajudar a entender o significado do caractere '_' nos setters e getters de javascript. Por exemplo, eu tenho o seguinte código que funciona bem.

var user = {
    get name() {
        return this._name;
    },    
    set name(value) {
        this._name = value;
    }
};

var me = user;
me.name = "Rob";

alert(me.name);

Mas se eu remover o sublinhado para que meu código fique com o seguinte, meu código não funcionará e eu recebo um erro no console do navegador informando "RangeError: tamanho máximo da pilha de chamadas excedido".

var user = {
    get name() {
        return this.name;
    },    
    set name(value) {
        this.name = value;
    }
};

var me = user;
me.name = "Rob";

alert(me.name);

</script>

Alguém pode me explicar o que o "_" faz nessa situação?

questionAnswers(2)

yourAnswerToTheQuestion