Копіювання об’єктів. Патерн «Об’єкт параметрів»

Є кілька способів зробити копію об’єкта в JavaScript:

  1. Використання Spread оператора (...): Оператор Spread дозволяє створювати поверхневу копію об’єкту.
const originalObject = { name: 'John', age: 30 };
const copiedObject = { ...originalObject };

2.Метод Object.assign(): Цей метод також створює поверхневу копію об’єкту.

const originalObject = { name: 'John', age: 30 };
const copiedObject = Object.assign({}, originalObject);

3.За допомогою циклу for…in: Цей метод дозволяє вручну перебрати і копіювати властивості з одного об’єкту до іншого.

const originalObject = { name: 'John', age: 30 };
const copiedObject = {};
for (let key in originalObject) {
    copiedObject[key] = originalObject[key];
}

Усі ці методи створюють поверхневі копії об’єктів. Якщо об’єкт містить вкладені об’єкти чи інші змінні об’єктного типу, вони будуть посилатися на ті ж об’єкти у пам’яті. Для глибокого копіювання, коли потрібно також створити копії вкладених об’єктів, потрібно використовувати функцію structuredClone чи бібліотеки, які надають інструменти для глибокого копіювання структур даних.

Патерн «Об’єкт параметрів»

Патерн «Об’єкт параметрів» – це прийом у програмуванні, коли замість передачі багатьох окремих аргументів до функції, ми передаємо їх у вигляді одного об’єкта. Це зручний спосіб зменшити кількість аргументів та зробити код більш читабельним. Давайте розглянемо основи цього патерну та надамо приклади його використання.

Основи патерну «Об’єкт параметрів»

Замість передачі багатьох аргументів окремо до функції, ми збираємо їх у вигляді об’єкта та передаємо цей об’єкт у функцію як єдиний аргумент. Властивості цього об’єкта відповідають окремим параметрам функції.

Приклад використання патерну «Об’єкт параметрів»

// Приклад функції, яка приймає багато параметрів
function printUserInfo(name, age, gender, occupation) {
  console.log(`Name: ${name}`);
  console.log(`Age: ${age}`);
  console.log(`Gender: ${gender}`);
  console.log(`Occupation: ${occupation}`);
}

// Використання функції з багатьма параметрами
printUserInfo("John", 30, "male", "developer");

Замість цього, ми можемо використовувати патерн «Об’єкт параметрів»:

// Функція приймає один об'єкт параметрів
function printUserInfo(user) {
  console.log(`Name: ${user.name}`);
  console.log(`Age: ${user.age}`);
  console.log(`Gender: ${user.gender}`);
  console.log(`Occupation: ${user.occupation}`);
}

// Використання функції з об'єктом параметрів
const user = {
  name: "John",
  age: 30,
  gender: "male",
  occupation: "developer"
};
printUserInfo(user);

Переваги патерну «Об’єкт параметрів»

  1. Читабельність коду: Передача багатьох параметрів у вигляді одного об’єкта полегшує розуміння та читабельність коду.
  2. Змінність порядку: Порядок передачі параметрів не має значення, оскільки ми вказуємо їх за допомогою назв властивостей об’єкта.
  3. Значення за замовчуванням: Можна легко встановити значення за замовчуванням для властивостей об’єкта.