Xossalarni o'chirish
delete
operatori (§4.13.4) obyektdan xossani olib tashlaydi. Uning yagona operandi xossaga murojaat qilish ifodasi bo'lishi kerak. Ajablanarlisi shundaki, delete
xossaning qiymati ustida emas, balki xossaning o'zi ustida ishlaydi:
delete
operatori faqat shaxsiy xossalarni o'chiradi, meros qilib olinganlarni emas. (Meros qilib olingan xossani o'chirish uchun siz uni o'sha xossa aniqlangan prototip obyektidan o'chirishingiz kerak. Bu ish o'sha prototipdan meros oladigan har bir obyektga ta'sir qiladi.)
Agar o'chirish muvaffaqiyatli bo'lsa yoki o'chirish hech qanday ta'sir ko'rsatmasa (masalan, mavjud bo'lmagan xossani o'chirish), delete
ifodasi true
'ga baholanadi. delete
, shuningdek, xossaga murojaat qilish ifodasi bo'lmagan ifoda bilan (ma'nosiz) ishlatilganda ham true
'ga baholanadi:
delete
operatori configurable
atributi false
bo'lgan xossalarni olib tashlamaydi. Ichki o'rnatilgan obyektlarning ba'zi xossalari, shuningdek, o'zgaruvchi e'loni va funksiya e'loni orqali yaratilgan global obyektning xossalari sozlanmaydigan (non-configurable
) hisoblanadi. Qat'iy rejimda, sozlanmaydigan xossani o'chirishga urinish TypeError
xatoligiga sabab bo'ladi. Qat'iy bo'lmagan rejimda esa, bu holda delete
shunchaki false
'ga baholanadi:
Qat'iy bo'lmagan rejimda global obyektning sozlanadigan xossalarini o'chirayotganda, global obyektga havolani tushirib qoldirishingiz va shunchaki delete
operatoridan keyin xossa nomini yozishingiz mumkin:
Biroq qat'iy rejimda, agar delete
'ning operandi x
kabi to'g'ridan-to'g'ri identifikator bo'lsa, u SyntaxError
xatoligiga sabab bo'ladi va siz xossaga murojaatni to'liq ko'rinishda (globalThis.x
kabi) yozishingiz shart: