TL; DR; Если ваш object или array одноуровневый и содержит только примитивные значения, вы можете без проблем использовать эти методы.

1. Почему не следует использовать Object.assign ()

object.assign() делает только мелкую копию. Означает, если ваш объект вложен. Даже если у вашего объекта два уровня. Object.assign не работает.

Рассмотрим код ниже:

Подумайте 🤔 на мгновение о том, что будет напечатано в консоли.
.

.

.

.

.
Если вы думаете, что он напечатает Galactus, то вы ошибаетесь. Вы можете это проверить. Это консоль Thanos в консоли.
Почему? Просто потому, что object.assign() делает неглубокую (только на один уровень) копию.

2. Почему не следует использовать ES6 Spread Operator для клонирования массивов / объектов?

Давайте рассмотрим ниже фрагмент кода:

Подумайте несколько секунд, что будет напечатано в консоли.
.

.

.

.

.

Если вы думаете, что это утешит JS, то ошибаетесь. Это утешит JS always blow 🤯 my mind. Почему? По той же причине. Spread Operator также делает мелкую (одноуровневую) копию.

Теперь рассмотрим приведенный ниже код. Теперь я запускаю карту, чтобы получить новый массив. Что вы думаете? Будет ли это иметь значение?

.

.

.

.

.

Нет, результат останется прежним. JS always blow 🤯 my mind.

Почему? потому что map нам действительно возвращает новый массив, но внутри него ссылки на объекты такие же.

Как это исправить?

Только если объекты внутри массива одноуровневые.

3. Почему не следует использовать JSON.stringify () для клонирования массивов / объектов?

Рассмотрим нижеприведенный фрагмент кода:

Выделите минутку и подумайте, что будет напечатано в консоли?
.

.

.

.

.
Если вы думаете, что он напечатает Hello !!!, то ошибаетесь. Выдает ошибку, что newObj.show() не является функцией. Почему?
Потому что, когда мы вызываем JSON.stringity() для любого объекта, мы просто теряем всю имеющуюся у объекта ссылочную информацию.

Надеюсь, в следующий раз, когда вы воспользуетесь этими методами, вы будете знать о последствиях их использования !!!

Узнайте о неизменяемости в JavaScript и о том, как решить проблему, которую не могут решить вышеуказанные методы, посетив эту статью.
https://rahuulmiishra.medium.com/immutability-in-javascript-892129a41497

Ура !!!
🍻