Bueno, a decir verdad el Memento es v�stago de ambos ;)
De todas formas; Joseba, has posteado una versi�n anterior --ya que
hab�a problemas con los arrays--. Las funciones en cuesti�n (para copiar
el objeto que sea _completo_) ser�an:
--- 8< ---
function clone(o,original) {
if (!original) original = o;
if (o instanceof Object) {
var n = new Object();
for (var p in o) {
if (o[p] instanceof Object && !(o[p] instanceof
(MovieClip || Function) && o[p] != original)) {
if (o[p] instanceof Array) {
n[p] =
$cloneArray(o[p],original);
}else{
n[p] = clone(o[p],original);
}
} else {
n[p] = o[p];
}
}
n.__proto__ = o.__proto__;
return n;
}else{
return o;
}
}
function $cloneArray(a,original) {
var tmpArray = new Array();
for (var i=0; i<a.length; i++) {
tmpArray.push(clone(a[i],original));
}
return tmpArray;
}
--- 8< ---
A�n tenemos que arreglar algunas cosillas del Memento. Cuando est�
definitivamente estable lo compartiremos por aqu� por si hay algui�n
interesado.
M.
-----Mensaje original-----
De: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
En nombre de Joseba Alonso
Enviado el: jueves, 20 de noviembre de 2003 1:23
Para: Lista ASNativos
Asunto: Re: [ASNativos] Copiar arrays
La cosa no es tan facil.:) El otro dia Manu y yo estubimos un buen rato
para escribir una. Hay que mirar mas factores para determinar si se debe
de asignar o copiar una propiedad. Adem�s ciertas propiedades deben de
copiarse "a mano" al estar ocultas, como __proto__ y __contructor__.
Basicamente es, como el tuyo, en una funcion recursiva.
<code>
function clone(o,original) {
if(!original)original=o;
if (o instanceof Object) {
var n = new Object();
for (var p in o) {
if (o[p] instanceof Object && !(o[p] instanceof MovieClip || o[p]
instanceof Function || o[p]!=original)) {
n[p] = clone(o[p],original);
} else {
n[p] = o[p];
}
}
n.__proto__ = o.__proto__;
n.__constructor__ = o.__constructor__
return n;
}else{
return o;
}
}
// uso
// var nuevo = clone(objeto)
// El segundo parametro es de uso interno
</code>
Yo particularmente veo muy util este sistema. Forma parte de un memento
que escribi� Manu.
un saludo
Joseba Alonso
www.sidedev.net
----- Original Message -----
From: "Eva del Campo" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Wednesday, November 19, 2003 10:00 PM
Subject: Re: [ASNativos] Copiar arrays
this=array??? no tar�a mal si funcionase, je, je
Parece que la mejor soluci�n es crear una funci�n global y listos.
Quedar�a algo as�: _global.copiarObjeto = function(elObjeto) {
if (elObjeto instanceof Array) {
var dupObj = new Array();
} else {
var dupObj = new Object();
}
for (var i in elObjeto) {
if (typeof (elObjeto[i]) == "object") {
dupObj[i] = copiarObjeto(elObjeto[i]);
} else {
dupObj[i] = elObjeto[i];
}
}
return dupObj;
}
Gracias a todos
xxxx
Eva
> Pues en lugar de prototype se monta como funci�n y listos... XD
>
> no se si rular� pero weno ... la idea es lo q cuenta XD
>
> function clone(array){
> this = array;
> ...
> }
<!-------------------------------
Lista ASNativos:
subscripciones/desubscripciones http://www.sidedev.net/asnativos
-------------------------------->
<!-------------------------------
Lista ASNativos:
subscripciones/desubscripciones http://www.sidedev.net/asnativos
-------------------------------->
<!-------------------------------
Lista ASNativos:
subscripciones/desubscripciones
http://www.sidedev.net/asnativos
-------------------------------->