Establecer un objeto igual a otro objeto con el operador de asignación en Javascript

Estoy llegando a javascript de fondo C En javascript, cuando uso el operador de asignación para asignar un objeto a otro, ¿copia los valores de uno a otro, o ambos apuntan ahora a los mismos datos? ¿O el operador de asignación hace algo en este 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;

En el ejemplo anterior, ¿pnt2.x ahora es igual a 8, o igual a 4, o igual a 0?

Sí, me doy cuenta de que puedo probar esto yo mismo, y lo haré mientras espero que la comunidad tenga una respuesta. Sin embargo, espero que la respuesta a mi pregunta pase un paso más allá de tan solo responder a este ejemplo y podría aclarar cómo funcionan los objetos de javascript y algunas de las mejores prácticas.

Siguiente pregunta:
La respuesta parece ser que la referencia está copiada. pnt2 y pnt1 ahora apuntan a los mismos datos. ¿Es posible configurar mi objeto para que se copien los valores? ¿Cómo se logra esto generalmente en javascript? Claramente, no quiero establecer cada atributo individualmente cada vez que necesito copiar este objeto.

Respuestas a la pregunta(4)

Su respuesta a la pregunta