Cara menghapus property object tanpa error JavaScript adalah memastikan objek bukan null atau undefined, lalu memakai delete dengan guard atau membuat salinan baru lewat destructuring. Banyak error muncul bukan karena delete rusak, melainkan karena kode langsung menghapus key dari data API yang belum tentu ada.
Penyebab Hapus Property Object Memicu Error
TypeError muncul ketika objek induknya null atau undefined. Kode seperti delete user.alamat langsung gagal bila user belum dimuat dari API.
Kasus lain adalah logic error. Properti tidak hilang karena objek di-freeze, di-seal, atau properti diset non-configurable lewat Object.defineProperty.
- Pastikan nilai memang object sebelum dihapus.
- Pastikan key benar-benar ada dengan operator
in. - Periksa status
Object.isFrozen()atauObject.isSealed()untuk data konfigurasi.
Cara Menghapus Key Object dengan Aman
Langkah bernomor paling aman untuk mutasi langsung:
1. Validasi objek tidak null.
2. Validasi key tersedia.
3. Jalankan delete.
// Salah: crash bila user null
delete user.password;
// Benar
if (user && 'password' in user) {
delete user.password;
}
Guard tersebut mencegah crash dan menghindari penghapusan sia-sia. Untuk state React, jangan mutasi langsung. Buat objek baru tanpa key lama:
const { password, ...safeUser } = user;
console.log(safeUser);
Pola rest destructuring ini menjaga state lama tetap utuh sehingga render ulang berjalan benar.
Perbandingan Metode Hapus Property Object
| Metode | Fungsi | Catatan |
|---|---|---|
| delete | Hapus key dengan mutasi | Cocok untuk objek lokal biasa |
| Destructuring rest | Buat salinan tanpa key | Cocok untuk React state |
| Reflect.deleteProperty | Hapus key dan kembalikan boolean | Cocok untuk validasi hasil hapus |
- Pakai mutasi
deleteuntuk objek sementara, misalnya membersihkan payload sebelum dikirim. - Pakai salinan baru untuk state, props, atau data yang dibagikan ke banyak komponen.
- Validasi input API dulu karena field bisa hilang, berubah tipe, atau bernilai null.
- Hindari
deletesaat iterasi objek yang sama. Salin daftar key denganObject.keys()dahulu.
FAQ
Apakah delete mengembalikan error bila key tidak ada?
Tidak, delete mengembalikan true bila key tidak ada, kecuali objek induknya null atau undefined.
Mana lebih aman untuk state, delete atau destructuring?
Destructuring rest lebih aman karena membuat objek baru tanpa mengubah state lama.
Kenapa property frozen tidak bisa dihapus?
Objek frozen mengunci konfigurasi propertinya sehingga penghapusan ditolak dalam strict mode.