Tengo un problema, y no sé como solucionarlo. Quiero copiar el contenido de una clase, llena de propiedades y quizá arrays en otra, para modificar está última y luego poder comparar los cambios.
 
He intentado todo lo que se me ha ocurrido y leido, pero no consigo lo que quiero. Se copian por referencia y al modificar la segunda clase se modifica la primera.
 
El último código que tengo es este:
 
<script language="JavaScript">
function cPagina(name){
	this.Name = name
	this.Objeto = new Array();
}
function cPagina2(objeto){
	this.Cont = objeto;
}
function cObjeto(valor){
	this.Valor = valor;
}
var Pagina = new cPagina('Tabla1');
Pagina.Objeto[0] = new cObjeto('Valor1');
Pagina.Objeto[1] = new cObjeto('Valor2');
Pagina.Objeto[2] = new cObjeto('Valor3');
Pagina.Objeto[3] = new cObjeto('Valor4');
Pagina.Objeto[4] = new cObjeto('Valor5');
Pagina.Objeto[5] = new cObjeto('Valor6');
Pagina.Objeto[6] = new cObjeto('Valor7');
Pagina.Objeto[7] = new cObjeto('Valor8');
Pagina.Objeto[8] = new cObjeto('Valor9');
Pagina.Objeto[9] = new cObjeto('Valor10');
 
function datos_cargar(){
	var intI;
	var tabla;
	var fila;
	var celda;
	var Pagina2;
 
	//Copio Pagina en un nuevo objeto Pagina2
	Pagina2 = new cPagina2(Pagina);
 
	//Cambio la propiedad Name de Pagina2
	Pagina2.Cont.Name = 'Tabla2';
	//Cambio el valor de un elemento de la propiedad array de Pagina2
	Pagina2.Cont.Objeto[9].Valor = 'Cambiado';
 
	//Listo en pantalla los dos objetos
	cargar_tabla(Pagina,document.all.cuerpotabla);
	cargar_tabla(Pagina2.Cont,document.all.cuerpotabla  2);
 
	//Coparación de los objetos
	if (Pagina!=Pagina2) alert("Distintos");
	else alert("Iguales");
 
	/*EL RESULTADO ES DESASTROSO: al cambiar el objeto2 cambia el objeto1, y para más 'inri'
	  dice que son distintos*/
}
function duplicar(objObjeto){
	var Aux = new cPagina();
 
	Aux = objObjeto
	return Aux;
}
function copiar(objObjeto){
	var intI;
	var Aux = new cPagina();
 
	for(intI=0;intI<objObjeto.Objeto.length;intI++){
		Aux.Objeto[intI] = new cObjeto(objObjeto.Objeto[intI].Valor);
	}
	return Aux;
}
function cargar_tabla(objObjeto,tabla){
	var intI;
	var objtabla;
	var fila;
	var celda;
 
	objtabla = tabla;
 
	fila = document.createElement('tr');
	celda = document.createElement('td');
	celda.width = 175;
	celda.height = 30;
	celda.align = 'center';
	celda.innerHTML = '<b>'+objObjeto.Name+'</b>';
	fila.appendChild(celda);
	objtabla.appendChild(fila);
 
	for(intI=0;intI<objObjeto.Objeto.length;intI++){
		fila = document.createElement('tr');
 
		celda = document.createElement('td');
		celda.width = 10;
		celda.innerText = objObjeto.Objeto[intI].Valor;
		fila.appendChild(celda);
 
		objtabla.appendChild(fila);
	}
}
</script>
 
Sin tener el cuenta el tema de la comparación (lo dejo para más tarde) quisiera saber ¿Cómo una clase en otra por valor sin tener que recorrer propiedad a propiedad o cada elemento de un array (que pudiera estar como una propiedad de la clase)?
 
Gracias. Estoy desesperado. Porque no se me ocurre nada, ni sencillo ni complicado. 
  
 
