удаление свойства javascript

#javascript

#javascript

Вопрос:

Просто интересно узнать об этом :

В чем разница, или есть ли разница вообще, между :

 delete obj.someProperty
  

и

 obj.someProperty=undefined
  

Ответ №1:

Вторая версия присваивает свойству существующее значение undefined , в то время как первая удаляет ключ из объекта. Разницу можно увидеть при переборе объекта или использовании in ключевого слова.

 var obj = {prop: 1};
'prop' in obj; // true
obj.prop = undefined;
'prop' in obj; // true, it's there with the value of undefined
delete obj.prop;
'prop' in obj; // false
  

Ответ №2:

Разница будет реализована при повторном просмотре объекта. При удалении свойства оно не будет включено в цикл, тогда как простое изменение значения на undefined включит его. Длина объекта или количество итераций будут другими.

Вот некоторая отличная (хотя и расширенная) информация об удалении в JavaScript:

http://perfectionkills.com/understanding-delete/

Комментарии:

1. Спасибо за ссылку, это то, что я полностью недооценил 🙂

Ответ №3:

Использование delete фактически удалит сам ключ из объекта. Если вы установите значение в undefined , ключ все еще существует, но значение — это единственное, что изменилось.

Ответ №4:

Первое фактически удалит свойство, второе оставит его, но установит в undefined .

Это становится важным, если вы перебираете все свойства ( for (props in obj) { } ) или проверяете существование одного ( if ('someProperty' in obj) {} )