Как правильно удалить функцию
Здравствуйте.
Как правильно удалить функцию? Я пришел к, по сути, двум вариантам: function myfunc () { //Здесь какой-то код } // 1 вариант myfunc = null; // 2 var myfunc = null; // 3 function myfunc () {}; Какой по-вашему корректный способ и, желательно, почему? Или есть совершенно другой способ удаления функции? |
с какой целью?
|
vasa_c,
Сайт полностью динамический, поэтому нужно мусор удалять при переходе на ту или иную страницу. К примеру: Если функция myfunc существую, значит в ней есть мусор (классы, события и пр.), и прежде чем подгрузить новые данные удаляем те, что содержит эта функция, а затем саму функцию. И при переходе на следующую страницу, если функции нет, значит и мусора нет, а если есть, выполняем туже процедуры, которую я выше описал. |
Возьми какой-нибудь UI-фреймворк/либу (react, backbone, angular) и не трахай мозг)
Ну, а касательно задачи - первый вариант, конечно же, он единственный логически верный. |
Erolast,
Все проблема не в том, чтобы написать сайт, а в том, чтобы набраться опыта, научиться работать с голым JS. Фреймворки использовать проще простого! |
В функции нет мусора, кроме её самой.
Мусор в конкретных контекстах вызовов. |
vasa_c,
К примеру: При переходи на страницу приватной переписки, в конце всего кода JS создается функция // И вот ее содержимое должно быть уничтожено до того как сама функция канет в лето destroy function() { clearTimeout(idTimeout); //Т.к. сообщ. подгружаются динамически, то при переходе на другую страницу убиваем таймер, чтобы сообщения в некуда не подгружались // Массив с ключом http['DR'] содержит объект XHR и если при переходе на другую страницу как раз таки осуществляется запрос для получения новых данных, то отменяем его if (typeof http['DR'] != "undefined") { http['DR'].abort(); delete http['DR']; } // ..... И так далее... Удаляем другие данные, если требуется } |
Цитата:
|
Erolast,
Я с вами согласен, но, как мне кажется, чтобы браться за изучение того или иного фреймворка, нужно понимать как устроен, так скажем, низкий уровень языка программирования. |
Если ты хочешь удалять и ф-цию и ссылку на нее, не используй function declaration, делай так:
foo=function (){} alert(delete foo) // true вторые 2 способа фактически равноценны, 3-й способ имеет смысла, ты там вместо одного объекта функции ложешь в память другой объект, хрен нахрен меняешь. |
Часовой пояс GMT +3, время: 01:55. |