La danse JSON stringify-parse a été la copie complète de tout le monde pendant une décennie, et elle a discrètement détruit les dates, les cartes et tout ce qui est circulaire. structuredClone est la réponse de la plate-forme, spectaculairement meilleure là où cela compte.

const copy = structuredClone(cart);
  • Il copie les types que JSON ne peut pas : Date, Map, Set, les tableaux typés et les structures cycliques reviennent intacts au lieu d'être stringifiés ou lancés.
  • Il refuse toujours les fonctions et les nœuds DOM, ce qui, de par sa conception, maintient l'état de la couche d'affichage et les gestionnaires d'événements hors de vos clones de données.
  • Les instances de classe sont clonées sous forme d'objets simples ; les méthodes et les champs privés ne survivent pas, alors reconstruisez le comportement réel à partir d'une usine lorsque vous en avez besoin.

Où il gagne sa place

Instantanés d'état à annuler, correctifs optimistes dans un panier, formulaires de brouillons pour une file d'attente de sauvegarde automatique : tout endroit où la copie doit être indépendante de l'objet actif ou être stockée. Un aller-retour JSON à ces endroits est un bug attendant un mardi.

Une mise en garde mérite d'être dite à haute voix : le clone n'est pas une frontière de sécurité, il copie des données ; échapper à une page est un problème différent avec différents outils. Très gacor d'avoir enfin un mot de première classe pour une copie approfondie : embauchez le bon outil, supprimez le hack stringify.