Временният обект на 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
Какво точно ви притеснява? Ако обектите не са посочени, GC в крайна сметка ще ги премахне от паметта.   -  person Tasos K.    schedule 03.01.2014
comment
ако не се нуждаете от препратка към обекта по-късно, не трябва да съхранявате никъде. Точно сега трябва да бъде изтрит от събирача на отпадъци.   -  person philipp    schedule 03.01.2014
comment
Не съм сигурен, че разбирам. Ако не се съхранява в нито една променлива, как очаквате да получите достъп до него по-късно? И ако нямате достъп до него по-късно, защо ви е грижа за него?   -  person jcoder    schedule 03.01.2014
comment

Опитвам се да направя сплайн, за да изчисля производната на контур на част от изображение. Уловката е, че изглежда не знам как да накарам сплайна да мине през определена точка. Използвам библиотеката scipy.interpolate с метода UnivariateSpline.

  -  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