Задать вопрос
@cubooks
Web-developer

Как прекратить сущеcтвование функции в Javascript?

Добрый день! Меня интересует, возможно ли сделать так, чтобы функция которая выполняется, перестала выполнятся и прекратило свое существование.

Предположим, у нас есть небольшая библиотека, которая выполняет код исходя из какого-либо условия.

var mobile = function(newConfigure) {
            this.functions = {mobile : null , desktop: null};
        };

      
        mobile.prototype.run = function(params) {
            //Здесь какое-либо условие 
            if(условие) {
                   params.mobile();
            } else {
                   params.desktop();
            }
        };


Запускаем мы вот так:

new mobile().run({
               'mobile' : function() {
                       //Code
               } , 
              'desktop' : function() {
                     //Code
              } , 
}):


Программа работает, но меня интересует, как сделать так, чтобы при выполнение, например mobile, де-активировалась функция desktop (чтобы её код вообще никак не мог функционировать), и наоборот.

Зачем нужно?
Например, если вставлять код jQuery, то при переходе на другое состояние, он будет работать, чего мне не требуется.
  • Вопрос задан
  • 1110 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
mlnkv
@mlnkv
JavaScript Developer
Так будет красивее
function Mobile(newConfigure) {
  this.callbacks = []
  this.functions = {mobile: null, desktop: null};
}

Mobile.prototype.dispatcher = function(el, ev, dlg, cb) {
  this.callbacks.push({ el: el, ev: ev});  
  return $(el).on(ev, dlg, cb);
}

Mobile.prototype.removeListeners = function() {
  for (var i = 0, ln = this.callbacks.length; i < ln; i++ ) {
    $(this.callbacks[i].el).off(this.callbacks[i].ev);
  }
  this.callbacks = [];
}

Mobile.prototype.run = function(params) {
  //Здесь какое-либо условие 
  this.removeListeners();
  if (условие) {    
    params.mobile(this.dispatcher);
  } else {
    params.desktop(this.dispatcher);
  }
}

var mobile = new Mobile({
  mobile: function(on) {
    on('#myButton', 'click', function(e) { /* */ });
  },
  desktop: function(on) {
    on('#myButton', 'click', function(e) { /* */ });
  }
})

mobile.run();


А что значит: "... при переходе на другое состояние, он будет работать ..." ?
Что значит работать? У вас запускаются setInterval, setTimeout или вешаются события? Код выполняется один раз, он не может просто "работать"
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@flor_master
Могу верстать, могу не верстать.
метод delete вам в помощь
javascript.ru/delete
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы