- jschrab
SourceAhora hay un estándar JS llamado "clonación estructurada" , que funciona de forma experimental en Node 11 y versiones posteriores, llegará a los navegadores y tiene polyfills para sistemas existentes.
clon estructurado(valor)
Si es necesario, carga primero el polyfill:
importar clon estructurado desde '@ungap/clon estructurado';
Consulte esta respuesta para más detalles.
undefined
, Infinity
, RegExps, Maps, Sets, Blobs, FileLists, ImageDatas, matrices dispersas, matrices tipificadas u otros tipos complejos dentro de su objeto, una línea muy simple para clonar en profundidad un objeto es:
const a = { cadena: 'cadena', número: 123, bool: falso, nulo: nulo, fecha: nueva fecha (), // en cadena undef: indefinido, // perdido inf: Infinity, // forzado a 'null' re: /.*/, // perdido } consola.log(a); console.log(tipo de una.fecha); // Objeto de fecha const clonar = JSON.parse(JSON.stringify(a)); consola.log(clonar); console.log(tipo de clon.fecha); // resultado de .toISOString()
Consulte Respuesta de Corban para puntos de referencia.
Dado que la clonación de objetos no es trivial (tipos complejos, referencias circulares, función, etc.), la mayoría de las principales bibliotecas proporcionan funciones para clonar objetos. No reinvente la rueda: si ya está utilizando una biblioteca, compruebe si tiene una función de clonación de objetos. Por ejemplo,
var A1 = {a: "2"}; var A2 = Objeto. asignar ({}, A1); var A3 = {...A1}; // Difundir sintaxis