TGViewer
Frontend | Вопросы собесов Frontend | Вопросы собесов @easy_javascript_ru · 17.6K subscribers
Post #964 5.05K
🤔 Как избежать ссылочной зависимости при копировании объекта?

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

🟠Использование JSON.stringify и JSON.parse
Этот метод подходит для простых объектов, не содержащих функций, специальных объектов (например, Date) или циклических ссылок.
const original = {
name: 'Alice',
age: 25,
address: {
city: 'Wonderland',
zip: '12345'
}
};

const copy = JSON.parse(JSON.stringify(original));
copy.address.city = 'Otherland';

console.log(original.address.city); // Wonderland
console.log(copy.address.city); // Otherland


🟠Использование рекурсивной функции для глубокого копирования
Этот метод позволяет точно контролировать процесс копирования и обрабатывать более сложные структуры данных.
function deepClone(obj) {
if (obj === null || typeof obj !== 'object') {
return obj;
}

if (Array.isArray(obj)) {
const arrCopy = [];
obj.forEach((item, index) => {
arrCopy[index] = deepClone(item);
});
return arrCopy;
}

const objCopy = {};
for (const key in obj) {
if (obj.hasOwnProperty(key)) {
objCopy[key] = deepClone(obj[key]);
}
}
return objCopy;
}

const original = {
name: 'Alice',
age: 25,
address: {
city: 'Wonderland',
zip: '12345'
}
};

const copy = deepClone(original);
copy.address.city = 'Otherland';

console.log(original.address.city); // Wonderland
console.log(copy.address.city); // Otherland


🟠Использование библиотеки lodash
Lodash предоставляет удобную функцию cloneDeep для глубокого копирования объектов.
const _ = require('lodash');

const original = {
name: 'Alice',
age: 25,
address: {
city: 'Wonderland',
zip: '12345'
}
};

const copy = _.cloneDeep(original);
copy.address.city = 'Otherland';

console.log(original.address.city); // Wonderland
console.log(copy.address.city); // Otherland


🟠Использование структурированной клонирования (Structured Clone)
Метод structuredClone позволяет создавать глубокие копии объектов. Этот метод является частью HTML Living Standard и поддерживается в некоторых современных браузерах и средах исполнения.
const original = {
name: 'Alice',
age: 25,
address: {
city: 'Wonderland',
zip: '12345'
}
};

const copy = structuredClone(original);
copy.address.city = 'Otherland';

console.log(original.address.city); // Wonderland
console.log(copy.address.city); // Otherland


Ставь 👍 и забирай 📚 Базу знаний
  • 👍 16
  • 🔥 1
More from @easy_javascript_ru
  1. Oct 13, 2026🤔 Что такое репозиторий? Это хранилище кода, файлов и их истории изменений. Используется…
  2. Oct 13, 2026🤔 Как мы можем замерить скорость работы участка кода с date.Now? В JavaScript можно замер…
  3. Oct 12, 2026Post #3039
  4. Oct 12, 2026🤔 Зачем нужен docker? Это инструмент для создания, развертывания и управления контейнерам…
  5. Oct 11, 2026🤔 Для чего нужен тег <noscript>? Он используется для отображения альтернативного контента…
  6. Oct 11, 2026🤔 Какими способами мы можем получить картинку с сервера? В веб-разработке есть разные спо…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →