Definir um objeto igual a outro objeto com o operador de atribuição em JavaScript
Eu estou vindo para javascript de fundo C. Em javascript, quando eu uso o operador de atribuição para atribuir um objeto a outro, ele copia os valores de um para o outro, ou ambos agora apontam para os mesmos dados? Ou o operador de atribuição faz alguma coisa neste caso?
function point_type()
{
this.x = 0;
this.y = 0;
}
var pnt1 = new point_type();
var pnt2 = new point_type();
pnt1.x = 4;
pnt1.y = 5;
pnt2 = pnt1;
pnt1.x = 8;
pnt2.y = 9;
No exemplo acima, o pnt2.x agora é igual a 8, ou ainda é igual a 4, ou ainda é igual a 0?
Sim, eu percebo que posso testar isso sozinho, e farei isso enquanto espero que a comunidade encontre uma resposta. No entanto, espero que a resposta à minha pergunta passe um passo além de responder a esse exemplo e possa esclarecer como funcionam os objetos javascript e algumas práticas recomendadas.
Questão a seguir:
A resposta parece ser que a referência é copiada. pnt2 e pnt1 agora apontam para os mesmos dados. É possível configurar meu objeto para que os valores sejam copiados? Como isso geralmente é feito em javascript? É claro que não quero definir cada atributo individualmente sempre que preciso copiar esse objeto.