Javascript - this vs var

Não consigo entender como a variável pode ter o nome duplicado aqui, e como é o acesso, acessando o mesmo nome cada uma retorna um valor diferente? como isso é guardado?
https://jsfiddle.net/erickdeoliveiraleal/mLrahfou/

ps.: Sinalizei como off-topic por erro. Por favor se puderem desfazer a sinalização.

Olá, Erick!

Em JavaScript, funções também são objetos, logo, tem propriedades, tanto nativas quanto definidas pelo programador.

Quando você define a propriedade nome com o operador this dentro da função construtora OlaSimples, você está indicando que ela fará parte de todas as instâncias do tipo OlaSimples e será acessível fora da função.

Já a variável nome, aquela declarada com var, existe apenas no escopo da função, ou seja, não poderá ser acessada fora de seu bloco.

O que quero dizer é que esses dois valores, apesar de serem referenciados pelo mesmo nome dentro do mesmo bloco, não estão armazenados no mesmo lugar.

Um armário com uma placa “A” em um vestiário 1 não é o mesmo armário “A” do vestiário 2. Entende?

Para entender um pouco melhor o fato de funções serem objetos, faça um teste simples: crie uma função qualquer (ou use essa do seu exemplo) e tente acessar a propriedade name dela. Veja um exemplo:

function myFunc() { }
myFunc.name // retornará "myFunc"

Todas as funções criadas em JavaScript tem uma propriedade name. =)

Espero tê-lo ajudado, meu caro!

Bons estudos!