Cópias de Objetos Primitivos (ObjectCopy)

No AS2 toda passagem de parâmetro e atribuição de objetos “não primitivos” (MovieClip, Classes, Object, Array) é feita por referência ou seja ao invés de passar uma cópia do objeto é passado apenas o endereço aonde o objeto esta na memória. Isto traz uma série de vantagens que não vem ao caso, mas nem sempre é o que desejamos.

Diversas vezes nos deparamos com esta situação, mas sempre pensamos em uma solução que restringe-se ao problema como por exemplo duplicar um Array de número em duas ou três linhas resolvemos isto, mas e se for uma matriz?Também resolvemos em umas quatro ou cinco linhas, mas e se este matriz conter, números, strings e datas ou pior e se não sabermos como o objeto é composto? Foi pensando nisso e com a necessidade de solucionar este problema eu criei um componente que atende esta série problemas de uma forma bem simples e com poucas linhas.

class ObjectCopy
{
public static function copy (srcObj) : Object
{
if (typeof (srcObj) == “object”)
{
if (srcObj instanceof Array)
{
var p : Array = new Array ();
for (var i = 0; i < srcObj.length; i ++)
{
p.addItem (ObjectCopy.copy (srcObj [i]));
}
return p;
}
else if (srcObj instanceof Date)
{
return new Date (srcObj);
} else
{
var newObj = new Object ();
for (var p in srcObj)
{
newObj [p] = ObjectCopy.copy (srcObj [p]);
}
return newObj;
}
} else
{
return srcObj;
}
}
}

Nenhum comentário

Deixe Seu Comentário