 
			
				14/10/2003, 03:10
			
			
			     |  
      |    |    |    Fecha de Ingreso: octubre-2003  
						Mensajes: 7
					  Antigüedad: 22 años Puntos: 0     |        |  
  |      Copiar objeto clase        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.           |