delete
Аргументы
- expression
- выражение, приводимое к ссылке на удаляемый объект
Описание, примеры
Удаляет объект, свойство объекта или элемент массива по указанному индексу.
Значением expression
должна являтся ссылка на удаляемое свойство, например:
2 | delete objectExpression.property |
3 | delete objectExpression[ "property" ] |
Если expression
не приводится к свойству, оператор delete
не делает ничего.
При успешном выполнении оператор delete
удаляет свойство из объекта.
При этом delete
не меняет прототип объекта, даже если там есть свойство, совпадающее по названию с удаляемым.
Некоторые свойства объектов не могут быть удалены. В спецификации такие свойства обозначены флагом DontDelete
.
Можно удалить переменные, объявленные глобально без var
, но нельзя - объявленные через var
.
Оператор delete
возвращает false
только если свойство существует, но не может быть удалено, и true
- в любых других случаях.
Вы не можете удалить свойство из объекта, которое он унаследовал от
прототипа (хотя вы можете удалить его напрямую из прототипа).
2 | Foo.prototype.bar = 42; |
6 | delete Foo.prototype.bar; |
При удалении элементов массива, его длина не меняется. Даже если вы удалите последний элемент: delete a[a.length-1]
- его длина останется той же.
При этом элемент исчезнет из массива:
Если вы хотите, чтобы элемент остался в массиве, но стал undefined
- просто приравняйте его к undefined
:
alert(1
in
arr)