Maison > interface Web > js tutoriel > Comment créer une véritable copie approfondie d'un objet JavaScript ?

Comment créer une véritable copie approfondie d'un objet JavaScript ?

Patricia Arquette
Libérer: 2024-12-26 02:03:10
original
750 Les gens l'ont consulté

How to Create a True Deep Copy of a JavaScript Object?

Comment cloner correctement des objets JavaScript

Le clonage d'objets JavaScript est une tâche cruciale dans divers scénarios de programmation. Cependant, créer une copie d'un objet qui n'est pas affectée par les modifications apportées à l'original peut s'avérer difficile en raison de la complexité du système d'objets JavaScript.

Pièges des méthodes de copie natives

Attribution d'objets natifs de JavaScript L'opérateur (par exemple, x = y) crée uniquement une référence à l'objet d'origine. Les modifications apportées à x ou à y affecteront les deux objets. De plus, la copie d'objets dérivés d'objets JavaScript intégrés (par exemple, Tableau, Date) peut introduire des propriétés indésirables.

Solution de clonage complète

Pour créer une copie complète d'un objet JavaScript, considérez la solution complète suivante :

function clone(obj) {
  if (null == obj || "object" != typeof obj) return obj;

  var copy = obj.constructor();
  for (var attr in obj) {
    if (obj.hasOwnProperty(attr)) copy[attr] = clone(obj[attr]);
  }
  return copy;
}
Copier après la connexion

Cette fonction utilise une approche récursive pour parcourir les propriétés de l'objet et créer un nouvel objet avec des instances distinctes pour chaque propriété valeur. Il gère les cas de types d'objets nuls, non définis et divers intégrés tout en excluant les propriétés non énumérables et cachées.

Cas et hypothèses limites

Bien que la solution couvre la plupart des scénarios, elle suppose que les données de l'objet forment une structure arborescente, ce qui signifie qu'il n'y a pas de références circulaires dans l'objet. En outre, cela nécessite une connaissance du constructeur de l'objet pour instancier correctement l'objet cloné.

Clonage structuré (mise à jour ES2022)

Dans les navigateurs modernes, la norme de clonage structuré offre un moyen plus robuste et efficace de créer des copies complètes d'objets. La fonction structuréClone() clone l'objet dans son intégralité, en préservant les propriétés cachées et les références circulaires.

const clone = structuredClone(object);
Copier après la connexion

N'oubliez pas que le clonage d'objets peut être une tâche complexe et considérez les limites de chaque approche en fonction des exigences spécifiques. de votre candidature.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal