Почти во всех интервью вас спросят: «Что такое поверхностное копирование и глубокое копирование объектов в javascript? и как мы можем их достичь»
Большинство из вас, включая меня, ответили так:
Оператор распространения, Object.assign()
и Object.create()
для неглубокого копирования.
Очевидно, JSON.stringify()
для глубокой копии.
Но теперь в javascript есть собственный способ создания глубокой копии объектов.
structuredClone
— это новая функция, встроенная в среду выполнения javascript для создания глубокой копии объектов.
Теперь JSON.stringify()
уже используется, но зачем вводить совершенно новую функцию для той же операции?
Ответ: оба ведут себя по-разному. Давайте рассмотрим один пример, тогда мы поймем, почему structuredClone
is подходит лучше, чем JSON.stringify()
Давайте создадим фиктивный объект уведомления следующим образом.
затем с помощью JSON.stringify()
и JSON.parse()
выполните глубокую копию. Ниже приводится результат:
давайте сделаем то же самое с structureClone()
. Вот журнал.
Если вы внимательно наблюдаете, дата должна быть объектом Date, а не строкой, но в случае StructuredDeepCopy дата является объектом Date, а не строкой. JSON.stringify()
не может обрабатывать все типы, которые мы используем в javascript.
Есть много других вещей, которые JSON.stringify()
не может обработать в javascript. Итак, лучше пойти с structuredClone()
.
о, подожди! реальный вопрос в том, что structuredClone()
может выполнять глубокое клонирование?
Вот пример
Спасибо за чтение. Я предоставляю высококачественные статьи без BS. Если понравилось хлопайте и подписывайтесь на письма.
Если вы готовитесь к интервью по javascript и его фреймворку, я написал статьи по вопросам (act.js, vue.js, HTML и CSS), которые мне задавали во время интервью.
Ниже приведены ссылки: