Введение
В этом практическом занятии мы научимся создавать глубокую копию объекта на JavaScript. Мы будем использовать рекурсию для клонирования примитивов, массивов и объектов, исключая экземпляры классов. В конце практического занятия вы сможете создать полную копию объекта без изменения исходного.
Это Guided Lab, который предоставляет пошаговые инструкции, чтобы помочь вам учиться и практиковаться. Внимательно следуйте инструкциям, чтобы выполнить каждый шаг и получить практический опыт. Исторические данные показывают, что это лабораторная работа уровня начальный с процентом завершения 92%. Он получил 100% положительных отзывов от учащихся.
Инструкции по глубокому клонированию объекта
Для глубокого клонирования объекта следуйте шагам:
- Создайте новую терминал/экземпляр SSH и введите
node, чтобы начать практиковаться в написании кода. - Используйте рекурсию для клонирования примитивов, массивов и объектов, исключая экземпляры классов.
- Проверьте, является ли переданный объект
null, и если да, вернитеnull. - Используйте
Object.assign()и пустой объект ({}), чтобы создать поверхностную копию исходного объекта. - Используйте
Object.keys()иArray.prototype.forEach(), чтобы определить, какие пары ключ-значение нужно глубоко скопировать. - Если объект является
Array, задайтеlengthклона равным длине исходного и используйтеArray.from(), чтобы создать клон. - Используйте следующий код для реализации глубокого клонирования:
const deepClone = (obj) => {
if (obj === null) return null;
let clone = Object.assign({}, obj);
Object.keys(clone).forEach(
(key) =>
(clone[key] =
typeof obj[key] === "object" ? deepClone(obj[key]) : obj[key])
);
if (Array.isArray(obj)) {
clone.length = obj.length;
return Array.from(clone);
}
return clone;
};
Используйте следующий код для тестирования вашей функции глубокого клонирования:
const a = { foo: "bar", obj: { a: 1, b: 2 } };
const b = deepClone(a); // a!== b, a.obj!== b.obj
Резюме
Поздравляем! Вы завершили практическое занятие по глубокому клонированию объекта. Вы можете практиковаться в других лабораторных работах в LabEx, чтобы улучшить свои навыки.