2016-08-02 3 views
-1
CircularCountDown.prototype = { 
    init: function() { 
     this.formatData(); 
     this.draw(); 
     this.start(); 
    }, 
    start: function() { 
     if (typeof this.data.beforeStart == "function") { 
      this.data.beforeStart(this); 
     } 
     this.show(); 
     this.starDecrementTimeEvent(); 
     var time = this.getFormattedTimeByCircle(); 
     this.animate(time); 
    }, 
    starDecrementTimeEvent: function() { 
     var that = this; 
     console.log(that); 
     this.decrementTimeEvent = setInterval(function() { 
      that.time -= 1; 
      that.setTime(that.getStringTime(that.time)); 
      if (that.time <= 0) { 
       that.time = 0; 
       that.stopDecrementTimeEvent(); 

       if (typeof that.data.end == "function") { 
        that.data.end(that); 
       } 
      } 
     }, 1000); 
    }, 
    stopDecrementTimeEvent: function() { 
     clearInterval(this.decrementTimeEvent); 
    } 
} 

Я использую плагин для кругового таймера, и я ищу функцию stopDecrementTimeEvent, чтобы остановить таймер в другом JS-файле. Я не знаю, как назвать это в этом формате.Вызов функции, указанной внутри прототипа

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

+1

Работает ли функция '.stopDecrementTimeEvent'? –

ответ

5

Я использую плагин для кругового таймера, и я хочу вызвать функцию stopDecrementTimeEvent, чтобы остановить таймер в другом JS-файле. Я не знаком о том, как назвать его в этом формате

Вы будете иметь экземпляр, который вы создали с помощью new CircularCountDown, например:

var theInstance = new CircularCountDown(/*...args here if needed...*/); 

экземпляр (объект), который создает волю имеют объект, который CircularCountDown.prototype ссылается на его прототип , что означает, что он наследует все его свойства.

Таким образом, вы просто позвоните stopDecrementTimeEvent по этому примеру:

theInstance.stopDecrementTimeEvent(); 

Это будет найти недвижимость stopDecrementTimeEvent на прототипе, а затем вызвать его с this ссылкой на экземпляр (объект), который будет иметь ручку таймера в его decrementTimeEvent объект, готовый для использования stopDecrementTimeEvent.

+0

Это не сработает, если вы создадите 2 экземпляра в 'CircularCountDown' в двух разных JS-файлах (вопрос задает« в другом JS-файле »). Вам нужно будет создать фабрику или передать' theInstance' в другой файл –

+0

@NicholasRobinson: Быть в отдельных файлах не имеет никакого отношения к этому вопросу. –

+0

Если у вас есть 'var theInstance = new CircularCountDown (/ * ... args здесь, если необходимо ... * /);' это оба JS-файла, вызывающие 'start' в одном файле и' stopDecrementTimeEvent' в другом файле 'this .decrementTimeEvent' не будет определен в более позднем экземпляре 'theInstance' –

Смежные вопросы