Нужна ли временному объекту Javascript ссылочная переменная и/или закрытие?

Мне нужно, чтобы короткие сообщения исчезали по истечении заданного времени. См. скрипт здесь: http://jsfiddle.net/X88F9/1/.

Это работает хорошо, в чем я не уверен, так это в ссылке на каждый созданный объект:

function addObject() {
    new SomeObj(Math.random() * 1000 + 300);
}

он не хранится ни в одной переменной, могу ли я просто оставить его как есть? Или мне нужно поместить их в какой-то массив?

Я также нашел эту рекомендацию поместить все в закрытие: https://stackoverflow.com/a/10246262/2969375, но не уверен, нужно ли в моем случае и если да, то как.


person John    schedule 03.01.2014    source источник
comment
Что именно вас беспокоит? Если на объекты нет ссылок, сборщик мусора в конечном итоге удалит их из памяти.   -  person Tasos K.    schedule 03.01.2014
comment
если вам не нужна ссылка на объект позже, вам не нужно никуда хранить. Прямо сейчас он должен быть удален сборщиком мусора.   -  person philipp    schedule 03.01.2014
comment
Не уверен, что понимаю. Если он не хранится ни в одной переменной, как вы ожидаете получить к нему доступ позже? И если вы не сможете получить к нему доступ позже, то зачем вам это?   -  person jcoder    schedule 03.01.2014
comment
Я больше не хочу получать к нему доступ, просто скину сообщение и исчезну через заданный интервал. Меня беспокоит именно то, будет ли такой код работать и объект будет существовать в течение заданного интервала.   -  person John    schedule 03.01.2014


Ответы (1)


Мой ответ на вопрос: Javascript не нуждается в ссылке на объект для работы, что подтверждается вашей скрипкой. Таким образом, вопрос больше о том, нужна ли вам ссылка на объект, чтобы делать с ним другие вещи позже. Если вы, например, хотите дать пользователю возможность щелкнуть временно отображаемое сообщение и предотвратить его исчезновение, вы можете поместить весь этот код в замыкание и не нуждаться в ссылке. Но если вы хотите снова отобразить тот же объект после его удаления из DOM, вам нужно сохранить его в массиве, другом объекте или переменной, в зависимости от ваших потребностей и способов найти его в списке.

person philipp    schedule 03.01.2014
comment
Спасибо, Филипп, можете ли вы прояснить закрытие или привести пример? Я не знаком с этим. - person John; 03.01.2014
comment
Я нашел этот пост: ссылка - это показывает закрытие? функции, определенные внутри конструктора объекта? - person John; 03.01.2014