JS: La Forma Más Eficiente de Copiar un Objeto



Si queremos copiar o duplicar un objeto en JavaScript (y no solo copiar la referencia, como en: var a = b;) podemos utilizar varios métodos como:

JSON.decode(JSON.encode(o));

A continuación veremos otros métodos y compararemos su eficiencia para determinar cuál es realmente la forma mas rápida y efectiva de copiar un objeto en JavaScript.

JQuery: Copia Superficial (shallow)


 Una copia superficial crea un nuevo objeto copiando cada atributo del objeto original, pero si este objeto ha tenido otros objetos como atributos, solo se copiará una referencia a estos objetos interiores.

var nuevo = jQuery.extend({}, original);

JQuery:Copia Profunda (deep)


Una copia profunda, a diferencia de la copia superficial, copia también cada sub-objeto que tenga el objeto a copiar, copiando también los sub-objetos de los sub-objetos, y así hasta lograr copiar todos los objetos involucrados.

var nuevo = jQuery.extend(true, {}, original);

Una Copia Profunda Mas Veloz (JSON)

De acuerdo a las pruebas de rendimiento en muchos navegadores, la forma mas rápida de hacer una copia profunda en JavaScript es usando:

var nuevo = JSON.parse(JSON.stringify(original))

Pero de todas maneras, si solo queremos realizar una copia superficial, JQuery hace un trabajo mas eficiente que esta última técnica.

Y la Forma Mas Veloz (objetos conocidos)


Si la velocidad es realmente importante, y estamos trabajando con objetos previamente conocidos, la forma más veloz por mucho es la siguiente:

var nuevo = {
  propiedadConocida: original.propiedadConocida,
  ..
}

¡Espero que te haya servido!

No hay comentarios:

Publicar un comentario