clone - javascript copy object without reference - ¿Cuál es la forma más eficiente de clonar en profundidad un objeto en JavaScript?

push object javascript / javascript / object

¿Cuál es la forma más eficaz de clonar un objeto JavaScript? He visto obj = eval(uneval(o)); que se está utilizando, pero eso no es estándar y solo es compatible con Firefox .

He hecho cosas como obj = JSON.parse(JSON.stringify(o)); pero cuestiona la eficiencia.

También he visto funciones de copia recursiva con varios defectos.
Me sorprende que no exista una solución canónica.

26 revs, 21 users 25%



Answer #1

Instálelo con

npm install clone

o empaquételo con Ender .

ender build clone [...]

Entonces podrá utilizarlo en su código fuente.

var clone = require('clone');

var a = { foo: { bar: 'baz' } };  // valor inicial de un
var b = clone(a);                 // clonar a -> b
a.foo.bar = 'foo';                // cambiar un

console.log(a);                   // { foo: { bar: 'foo' } }
console.log(b);                   // { foo: { bar: 'baz' } }