Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Полностью удалить объект (https://javascript.ru/forum/events/48575-polnostyu-udalit-obekt.html)

1lider 09.07.2014 01:58

Полностью удалить объект
 
Доброй ночи.

У нас имеется объект. Пример:

var new_obj = {'name':'peter', 'lastname':'petrelli'};

// удаляю его элементы
for(var key in new_obj) {
      delete new_obj[key];
}

// проверяю объект
alert(new_obj); // всплывает - [object Object]


Это значит, что наш объект ещё остался. Как же удалить созданный объект полностью? Спасибо.

Aetae 09.07.2014 03:48

Объект жив пока жива хотя бы одна ссылка на него. В остальном о нём позаботится Garbage Collector.

Т.е. если очень надо, то можно сделать так:
new_obj = null;
но локальные переменные сами исчезнут с завершением работы функции.(если конечно их не замкнуть)

foo 09.07.2014 05:10

не используй var при определениии объекта, тогда можешь сделать delete new_obj

foo 09.07.2014 05:12

Aetae,
В его случае ссылка на объект никогда не сдохнет

Aetae 09.07.2014 05:59

Цитата:

Сообщение от foo (Сообщение 320132)
не используй var при определениии объекта, тогда можешь сделать delete new_obj

Используй var всегда, и никогда не слушай foo.

Цитата:

Сообщение от foo (Сообщение 320133)
В его случае ссылка на объект никогда не сдохнет

Очевидно что пример вырван из контекста. Если же нет, и он работает в глобале - то оставшаяся ссылка на объект самая последняя из проблем на которые стоит обращать внимание.

MallSerg 09.07.2014 16:56

<script>
var new_obj = {'name':'peter', 'lastname':'petrelli'};
window.new_obj2 = new_obj = {'name':'peter', 'lastname':'petrelli'};

function d_delete (){
   alert ("delete");
    delete new_obj;
    delete new_obj2;
};

function c_chek(){
    alert(typeof new_obj);
    alert(typeof new_obj2);
};



</script>
<input type="button" onclick="d_delete()" value="delete">
<input type="button" onclick="c_chek()" value="chek">

Erolast 09.07.2014 19:33

К чему эти танцы? Присвоить null достаточно же.

foo 09.07.2014 20:07

Erolast,
Присвоив null Вы не удалите объект. Вы не читаете вопросы.

Hovhannes99 07.06.2018 18:20

Надо создать переменную, обявленную неявно (без вар или лэт), тогда можно спокойно удалить эту переменную с объектом через делет.


Часовой пояс GMT +3, время: 10:02.