Как стать автором
Обновить

Комментарии 11

Переполнение стека там тоже не предусмотрели. Всё как в lodash.

structuredClone(Array.from({length: 100000}).reduce(a => ({a})))

Так что если у вас объект "совсем произвольный", то надо промыслить нерекурсивный вариант...

----

const shallowCopy = Object.create(simpleEvent)

Эх, Стив, Стив..

"Что structuredClone не может клонировать 

Функции"

Ну и зачем он тогда такой нужен

Ясно понятно

.cloneDeep по-прежнему рулит

P.S. За статью спасибо

Ну и зачем он тогда такой нужен

для клонирования данных.

Ещё важно, что она использует ровно тот же самый structured clone алгоритм, что и другие места спецификации, например, отправка сообщений воркерам.

Это, думаю, и есть одна из основных причин, почему не клонируются функции - в воркерах просто не будет загружен ее код.

НЛО прилетело и опубликовало эту надпись здесь

StructuredClone и вправду отличная функция. Если кто то клонирует функции - то тут надо задуматься.

Если кто-то глубоко клонирует что-либо - надо задуматься.

Object.assign рекурсивно вызывать можно и не нужен lodash

Необходимость в клонировании данных, вне зависимости от языка - индикатор фундаментальной ошибки в архитектуре приложения, или, для случая JS - не знание особенностей базовой архитектуры языка.

По этой причине, разработчики JS, которые являются очень неглупыми людьми, даже не допускали необходимости в подобных методах.

Исключением могут быть только очень специфические задачи системного характера, которые при помощи языка JS, в настоящий момент решать невозможно.

Можете раскрыть мысль какими-то примерами или пояснениями, пожалуйста?

Интересно какие use case могут быть при клонировании объектов с функциями ? не разу не сталкивался с такими случаями, а вот клонировать глубоко вложенные объекты приходилось как то, так что думаю встроенная функция в языке очень даже неплохо.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий