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.

questionAnswers(4)

yourAnswerToTheQuestion