Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 24.04.2015, 14:50
Кандидат Javascript-наук
Отправить личное сообщение для zhurchik Посмотреть профиль Найти все сообщения от zhurchik
 
Регистрация: 04.06.2011
Сообщений: 116

Как правильно удалить функцию
Здравствуйте.
Как правильно удалить функцию?

Я пришел к, по сути, двум вариантам:

function myfunc () {
//Здесь какой-то код
}

// 1 вариант
myfunc = null;
// 2
var myfunc = null;
// 3
function myfunc () {};


Какой по-вашему корректный способ и, желательно, почему? Или есть совершенно другой способ удаления функции?
Ответить с цитированием
  #2 (permalink)  
Старый 24.04.2015, 16:44
Аватар для vasa_c
Профессор
Отправить личное сообщение для vasa_c Посмотреть профиль Найти все сообщения от vasa_c
 
Регистрация: 12.03.2008
Сообщений: 183

с какой целью?
Ответить с цитированием
  #3 (permalink)  
Старый 24.04.2015, 16:52
Кандидат Javascript-наук
Отправить личное сообщение для zhurchik Посмотреть профиль Найти все сообщения от zhurchik
 
Регистрация: 04.06.2011
Сообщений: 116

vasa_c,
Сайт полностью динамический, поэтому нужно мусор удалять при переходе на ту или иную страницу.
К примеру:
Если функция myfunc существую, значит в ней есть мусор (классы, события и пр.), и прежде чем подгрузить новые данные удаляем те, что содержит эта функция, а затем саму функцию. И при переходе на следующую страницу, если функции нет, значит и мусора нет, а если есть, выполняем туже процедуры, которую я выше описал.
Ответить с цитированием
  #4 (permalink)  
Старый 24.04.2015, 17:00
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

Возьми какой-нибудь UI-фреймворк/либу (react, backbone, angular) и не трахай мозг)

Ну, а касательно задачи - первый вариант, конечно же, он единственный логически верный.
Ответить с цитированием
  #5 (permalink)  
Старый 24.04.2015, 17:06
Кандидат Javascript-наук
Отправить личное сообщение для zhurchik Посмотреть профиль Найти все сообщения от zhurchik
 
Регистрация: 04.06.2011
Сообщений: 116

Erolast,
Все проблема не в том, чтобы написать сайт, а в том, чтобы набраться опыта, научиться работать с голым JS. Фреймворки использовать проще простого!
Ответить с цитированием
  #6 (permalink)  
Старый 24.04.2015, 17:06
Аватар для vasa_c
Профессор
Отправить личное сообщение для vasa_c Посмотреть профиль Найти все сообщения от vasa_c
 
Регистрация: 12.03.2008
Сообщений: 183

В функции нет мусора, кроме её самой.
Мусор в конкретных контекстах вызовов.
Ответить с цитированием
  #7 (permalink)  
Старый 24.04.2015, 17:14
Кандидат Javascript-наук
Отправить личное сообщение для zhurchik Посмотреть профиль Найти все сообщения от zhurchik
 
Регистрация: 04.06.2011
Сообщений: 116

vasa_c,
К примеру:
При переходи на страницу приватной переписки, в конце всего кода JS создается функция
// И вот ее содержимое должно быть уничтожено до того как сама функция канет в лето
destroy function()
{
    clearTimeout(idTimeout); //Т.к. сообщ. подгружаются динамически, то при переходе на другую страницу убиваем таймер, чтобы сообщения в некуда не подгружались

  // Массив с ключом http['DR'] содержит объект XHR и если при переходе на другую страницу как раз таки осуществляется запрос для получения новых данных, то отменяем его
  if (typeof http['DR'] != "undefined") {
	http['DR'].abort();
	delete http['DR'];
  }

 // ..... И так далее... Удаляем другие данные, если требуется
}

Последний раз редактировалось zhurchik, 24.04.2015 в 17:16.
Ответить с цитированием
  #8 (permalink)  
Старый 24.04.2015, 19:08
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

Цитата:
Все проблема не в том, чтобы написать сайт, а в том, чтобы набраться опыта, научиться работать с голым JS. Фреймворки использовать проще простого!
Ну, во-первых, правильный программист всегда пытается облегчить себе задачу, во-вторых - научиться пользоваться фреймворками как раз непросто, и именно с ними ты будешь набираться опыта: научишься строить более высокоуровневые абстракции, изучишь новые подходы, архитектурные паттерны, возможности, тонкости языка. Работая с чистым языком с собственными велосипедами ты только погрязнешь в говне, уж поверь, я сам это проходил.

Последний раз редактировалось Erolast, 24.04.2015 в 19:16.
Ответить с цитированием
  #9 (permalink)  
Старый 24.04.2015, 19:56
Кандидат Javascript-наук
Отправить личное сообщение для zhurchik Посмотреть профиль Найти все сообщения от zhurchik
 
Регистрация: 04.06.2011
Сообщений: 116

Erolast,
Я с вами согласен, но, как мне кажется, чтобы браться за изучение того или иного фреймворка, нужно понимать как устроен, так скажем, низкий уровень языка программирования.
Ответить с цитированием
  #10 (permalink)  
Старый 25.04.2015, 10:32
Интересующийся
Посмотреть профиль Найти все сообщения от jscripter
 
Регистрация: 25.04.2015
Сообщений: 4

Если ты хочешь удалять и ф-цию и ссылку на нее, не используй function declaration, делай так:
foo=function (){}
alert(delete foo)
// true

вторые 2 способа фактически равноценны, 3-й способ имеет смысла, ты там вместо одного объекта функции ложешь в память другой объект, хрен нахрен меняешь.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как правильно обращаться к свойствам объект внутри самого объекта ? mitiya Общие вопросы Javascript 12 25.04.2015 21:18
Как вы относитесь к наркоманам? Maxmaxmaximus7 Оффтопик 7 05.02.2014 13:29
Как правильно вызвать функцию Mateus jQuery 1 16.12.2012 15:43
Как правильно прицепить обработку события slowklg Events/DOM/Window 6 15.03.2012 16:20
[Closure Compiler] Как запретить инлайнить функцию, которая вызывается из setTimeout? xintrea Events/DOM/Window 4 11.02.2011 16:23