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
-------------------------------->