#фишка дня
Ребятки, тут в Chrome Canary прилетел structuredClone! Кто не знает, это рекурсивное копирование объекта: https://developer.mozilla.org/en-US/docs/Web/API/structuredClone
Вот только structuredClone заодно может не просто скопировать, но и перенести некоторые данные в новый объект. В буквальном смысле.
Больше никаких самодельных рекурсивных обходов. Ну, скоро.
Раньше было только в Firefox, кстати. В Chromium добавил https://twitter.com/AndreuBotella/
#js #object #clone
Ребятки, тут в Chrome Canary прилетел structuredClone! Кто не знает, это рекурсивное копирование объекта: https://developer.mozilla.org/en-US/docs/Web/API/structuredClone
Вот только structuredClone заодно может не просто скопировать, но и перенести некоторые данные в новый объект. В буквальном смысле.
Больше никаких самодельных рекурсивных обходов. Ну, скоро.
Раньше было только в Firefox, кстати. В Chromium добавил https://twitter.com/AndreuBotella/
#js #object #clone
#фишка дня
Заканчивайте использовать
Такой метод игнорирует даты, неопределённые значения и не работает с циклическими зависимостями.
Уже достаточно давно имеется structuredClone.
Наличествует во всех современных браузерах, есть полифилл.
P. S. вот тока не надо мне про лодаш тут плиз) все же использовали JSON-решение из-за скорости ⚡️
#js #clone
Заканчивайте использовать
JSON.parse(JSON.stringify(obj)) для дублирования (aka глубокого копирования aka deep copy) объектов в JavaScript.Такой метод игнорирует даты, неопределённые значения и не работает с циклическими зависимостями.
Уже достаточно давно имеется structuredClone.
Наличествует во всех современных браузерах, есть полифилл.
P. S. вот тока не надо мне про лодаш тут плиз) все же использовали JSON-решение из-за скорости ⚡️
#js #clone
MDN Web Docs
Window: structuredClone() method - Web APIs | MDN
The structuredClone() method of the Window interface creates a deep clone of a value using the structured clone algorithm.
👍23🔥3🥰1
#инструмент дня
Раз уж упомянули пару постов назад Кори Хауса, то давайте ещё чего-нибудь по его рекомендации.
И сегодня это инструмент для поиска дубликатов кода: jscpd.
Сразу ссылка на GitHub: https://github.com/kucherenko/jscpd
Как получаются дубликаты, клоны кода? Да от плохих абстракций. Сами по себе они ничем не плохи, ну есть у вас повторы там-сям, кому от этого плохо?
Ну, пока лежат — никому. Но если в одном таком куске кода баг — это лишь вопрос времени, когда он себя проявит в другим таком же куске. А чинить-то его везде надо.
Ну и на фронтенде банально раздувается размер бандла. Тоже такое себе.
Вообще, клонированный код это показатель того, что где-то у вас плохо с абстракциями, одна и та же логика применяется к, казалось бы, разным сущностям и так далее. Само по себе, это не так плохо, не просто же так в оппозиции к DRY (do not repeat yourself) существует WET (write everything twice).
Но иметь инструмент для поиска совсем уж лишнего — весьма неплохо.
А для тех, кому надо докопаться до сути, имеется целое исследование по поиску клонов кода, на 115 страниц: https://research.cs.queensu.ca/TechReports/Reports/2007-541.pdf
Но все, что я могу сказать — это что jscpd является реализацией детектора копий первого типа 🫠
Пользуется кто-нибудь чем-то подобным в своих проектах? Делитесь.
#js #clone #lint
Раз уж упомянули пару постов назад Кори Хауса, то давайте ещё чего-нибудь по его рекомендации.
И сегодня это инструмент для поиска дубликатов кода: jscpd.
Сразу ссылка на GitHub: https://github.com/kucherenko/jscpd
Как получаются дубликаты, клоны кода? Да от плохих абстракций. Сами по себе они ничем не плохи, ну есть у вас повторы там-сям, кому от этого плохо?
Ну, пока лежат — никому. Но если в одном таком куске кода баг — это лишь вопрос времени, когда он себя проявит в другим таком же куске. А чинить-то его везде надо.
Ну и на фронтенде банально раздувается размер бандла. Тоже такое себе.
Вообще, клонированный код это показатель того, что где-то у вас плохо с абстракциями, одна и та же логика применяется к, казалось бы, разным сущностям и так далее. Само по себе, это не так плохо, не просто же так в оппозиции к DRY (do not repeat yourself) существует WET (write everything twice).
Но иметь инструмент для поиска совсем уж лишнего — весьма неплохо.
А для тех, кому надо докопаться до сути, имеется целое исследование по поиску клонов кода, на 115 страниц: https://research.cs.queensu.ca/TechReports/Reports/2007-541.pdf
Но все, что я могу сказать — это что jscpd является реализацией детектора копий первого типа 🫠
Пользуется кто-нибудь чем-то подобным в своих проектах? Делитесь.
#js #clone #lint
👍14
#фишка дня
Заканчивайте использовать
Такой метод игнорирует даты, неопределённые значения и не работает с циклическими зависимостями.
Уже достаточно давно имеется structuredClone.
Наличествует во всех современных браузерах, есть полифилл.
P. S. вот тока не надо мне про лодаш тут плиз) все же использовали JSON-решение из-за скорости ⚡️
#js #clone #бородач
Заканчивайте использовать
JSON.parse(JSON.stringify(obj)) для дублирования (aka глубокого копирования aka deep copy) объектов в JavaScript.Такой метод игнорирует даты, неопределённые значения и не работает с циклическими зависимостями.
Уже достаточно давно имеется structuredClone.
Наличествует во всех современных браузерах, есть полифилл.
P. S. вот тока не надо мне про лодаш тут плиз) все же использовали JSON-решение из-за скорости ⚡️
#js #clone #бородач
MDN Web Docs
Window: structuredClone() method - Web APIs | MDN
The structuredClone() method of the Window interface creates a deep clone of a value using the structured clone algorithm.
👍12