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