Видалення властивості з об'єкта
1. Оператор delete
Найпростіший і найпоширеніший спосіб:
const user = {
name: 'Tim',
age: 25,
city: 'Kyiv'
};
delete user.age;
console.log(user);
// { name: 'Tim', city: 'Kyiv' }Оператор delete видаляє властивість прямо з об'єкта.
Важливо:
-
deleteпрацює тільки з властивостями об'єкта, а не зі змінними. -
Повертає
true, навіть якщо властивості не існувало:javascriptdelete user.nonexistent; // true -
Не впливає на прототип, тільки на сам об'єкт.
2. Через деструктуризацію (іммутабельний спосіб)
Якщо ти хочеш створити новий об'єкт без властивості, не змінюючи вихідний:
const user = { name: 'Tim', age: 25, city: 'Kyiv' };
const { age, ...updatedUser } = user;
console.log(updatedUser);
// { name: 'Tim', city: 'Kyiv' }Тут ...rest збирає всі властивості, що залишилися -
видалення відбувається "м'яко", без зміни оригіналу.
3. За допомогою Reflect.deleteProperty()
Це сучасна альтернатива delete, еквівалентна за змістом,
але використовується в більш формальних сценаріях (наприклад, у метапрограмуванні).
const user = { name: 'Tim', age: 25 };
Reflect.deleteProperty(user, 'age');
console.log(user); // { name: 'Tim' }Поведінка така сама, як у delete, але повертає true/false суворіше.
4. Обнулення або перевизначення (якщо не потрібно фізично видаляти)
Іноді безпечніше не видаляти, а просто обнулити значення:
user.age = null; // значення видалено логічно
// або
user.age = undefined;Така властивість залишається в об'єкті, але її значення вважається "порожнім".
Підсумок
| Спосіб | Змінює вихідний об'єкт | Що робить | Примітка |
|---|---|---|---|
delete obj.key | Так | Видаляє властивість | Простий і поширений спосіб |
Reflect.deleteProperty(obj, key) | Так | Те саме, але "офіційно" | Використовується в метапрограмуванні |
Деструктуризація { key, ...rest } | Ні | Створює новий об'єкт без властивості | Іммутабельний підхід |
obj.key = null | Так | "Очищає" значення, але не видаляє ключ | Зручно при скиданні стану |
Коротка відповідь
Для співбесідиКоротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.