Глубокая копия объекта в JavaScript с использованием StructuredClone

Feb 21 2023
Если вы здесь, держу пари, вы использовали JSON.parse() + JSON.
Фото Дэниела К. Ченга на Unsplash

Если вы здесь, держу пари, что вы использовали JSON.parse()+ JSON.stringify()трюк сотни раз, чтобы создать глубокую копию объекта в JavaScript. Вам это больше не нужно, натив structuredClone()здесь, чтобы помочь вам.

Поверхностное копирование против глубокого копирования

Прежде всего, давайте вспомним, в чем разница между поверхностной копией и глубокой копией:

  • Поверхностная копия: означает, что копируется только первый уровень объекта . Ссылаются на более глубокие уровни. Вы можете добиться этого в JavaScript, используя оператор Spread( …) или используя Object.assign().
  • Глубокое копирование: означает, что копируются все уровни объекта . Это точная копия объекта. Вы можете сделать это с помощью JSON.parse()+ JSON.stringify(), а теперь вы также можете сделать это с помощью родного structuredClone().

Глубокое копирование с использованием StructuredClone

Глобальный structuredClone()метод создает глубокую копию заданного значения, используя алгоритм структурированного клонирования .

Как вы можете видеть в этом фрагменте кода:

  • После обновления свойства на первом уровне клонированных объектов исходное свойство не обновляется .
  • После обновления свойства на более глубоком уровне исходное свойство не обновляется . Это происходит потому, что в этом случае копируются и более глубокие уровни.

Удачного кодирования!