O problema da herança reversa do Javascript

Para quem como eu veio de linguagens altamente exigentes no tipo como é o caso do Pascal ou que tem uma noção de herança em apenas um sentido, resulta um pouco estranho o jeito em que Javascript trata com a “coisa” objetos.

Considere o seguinte código:

a={ v1: 100, v2: 250 };
b=a;
b.v1=500;

O que vai trazer na variável a.v1?

Se respondeu 100, seus conhecimentos estão certos mas na linguagem errada.

b não é uma cópia de a e sim uma referência. Isso é muito bacana em se tratando de eliminar referências ao mesmo objeto e minimizar erros de duplicidade; mas não é nada bom na hora que se busca apenas uma cópia.

Usando YeAPF faça assim para resolver:

a={ v1: 100, v2: 250 };
b=a.extend();
b.v1=500;

Agora sim, seu a.v1 vai continuar com o valor 100 ao passo que b.v1 vai trazer 500

Fique feliz. Boa programação