Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   Нужно ли удалять события в js? (https://javascript.ru/forum/offtopic/33507-nuzhno-li-udalyat-sobytiya-v-js.html)

Gozar 26.11.2012 17:11

dmitry111,
Не нужно трахать всем мозг. Ты создаешь ссылку на обработчик события.

Цитата:

Сообщение от dmitry111
метод removeEvent в перевода значит "удалить событие"

Такого метода нет. Есть - removeEventListener, что в переводе означает - удалить обработчик события.

Назвать тему нужно было: Нужно ли удалять ссылку на обработчик события, если он уже не нужен.

Ты плаваешь в понимании происходящего. Ищи темы про leak, если боишься обработчиков. Но в действительности ты ещё только на вершине айсберга. Замыкания могут "теоретически" сожрать память до падения браузера, на слабом компе. Особенно если ты будешь удалять ссылку на обработчик, а обработчик не умрет, а вот ссылку ты уже потеряешь на него.

Хочешь копнуть - создай окошко drug&drop с закрытием по крестику и чтобы его можно было таскать и чтобы окошек этих можно было создать одновременно 1000 и потести. Узнаешь много интересного.

dmitry111 26.11.2012 18:03

Gozar,

Цитата:

Сообщение от Gozar
Есть - removeEventListener, что в переводе означает - удалить обработчик события

Ну на самом деле "обработчик событий" в переводе значит "event handlers"

Цитата:

Сообщение от Gozar
Назвать тему нужно было: Нужно ли удалять ссылку на обработчик события, если он уже не нужен.

вот тут согласен, да! Ключевое слово "ссылка"

Формулировка вроде моей: "удалять событие"
или вроде вашей (и часто употребляемой кстати):
Цитата:

Сообщение от Gozar
Ты удалил обработчик а не событие.

не совсем корректны

Gozar 26.11.2012 18:48

Цитата:

Сообщение от dmitry111
Ну на самом деле "обработчик событий" в переводе значит "event handlers"

Ну на самом деле если ты китаец, в чём я уже нисколько не сомневаюсь, то все в порядке, а на русский язык принято переводить removeEventListener удалить обработчик события. А если ты такой умный, то ты должен бы это знать.

Это общепринятое понятие и если ты хочешь, чтобы тебя понимали другие люди, кроме твоего внутреннего ЭГО, то извольте выражаться на общепринятом языке.

Gozar 26.11.2012 18:55

зы: И да я вкурсе как переводиться listener.

Gozar 26.11.2012 18:59

И по теме. Удалять объект события не нужно, он удаляется сборщиком мусора, когда на него удалены все ссылки. В то время как обработчики события удалять нужно иначе память очищаться не будет и они будут болтаться в ней. Если на click это не критично, то на mousemove может стать очень критично.

dmitry111 26.11.2012 20:38

ок, да я и не спорю..
Удалять обработчик события, пусть будет так, раз все привыкли;

nerv_ 26.11.2012 20:49

dmitry111, ответ на вопрос.

Цитата:

Сообщение от Gozar
Не встречал, чтобы удаляли события. Это возможно?

да, если они пользовательские :)

Цитата:

Сообщение от melky
заместо тысячи обработчиков клика по кнопкам "да", "нет" лучше повесить один на родителя - window, например.

$( document ).on( 'click', 'простыня :)', function() {
});

все зависит от ситуации

Gozar 26.11.2012 21:08

Цитата:

Сообщение от nerv_
да, если они пользовательские

удали событие "увидел".

Gozar 26.11.2012 21:12

Приводите пожалуйста примеры кода, в подтверждение ваших слов. Моя твоя не понимай. Вернее моя, твоя понимай, но давайте с кода начинать, а не создавать дурацкие темы с догадайся сам, что я имею в виду.

Я уже когда-то имел удовольствие препираться по поводу вопроса "Сколько флешей может быть установлено на одной машине". Как оказалось вопрос получился с подковыркой. На самом деле плагинов отвечающих за интерпретацию кода может быть несколько(в линукс точно, в винде возможно только один), а вот хранилище флеша используется всегда одно.

nerv_ 26.11.2012 21:50

Цитата:

Сообщение от Gozar
Приводите пожалуйста примеры кода

как-то так. По материалам газеты "Комсомольская ПРАВДА" :)
<script src="http://code.jquery.com/jquery-1.8.3.js"></script>
<script>
    var Gozar = $( {} );

    Gozar.on( 'say', function() {                   // создали свое событие и подписались на него
        alert( 'All monkeys are different.' );
    });

    Gozar.trigger( 'say' );                           // сгенерировали

    Gozar.off( 'say' );                                 // удалили обработчик
                                                            // теоретически, ничего не мешает удалить и самое событе
</script>

Цитата:

Сообщение от Gozar
удали событие "увидел".

не понял


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