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