Как добавить частную функцию в модель backbone.js?

Есть ли способ сделать функцию частной в магистрали, так что она будет доступна только самой модели и также иметь доступ к this?

Как сделать updateTime приватным?

   var Timeline = Backbone.Model.extend({
        url: 'servertime/',

        start: function(){
            this.fetch({
                success: function(timeline, response){
                    timeline.updateTime();
                    setInterval(function() {
                        timeline.updateTime();
                    }, 60 * 1000);
                }
            });
        },

        updateTime: function(){  //How can I make this private?
            this.time = ...
        }
    });

Ответы

Ответ 1

Вы можете добиться этого, завернув все это в самозависающую анонимную функцию, таким образом вы уверены, что updateTime является приватным:

(function() {
  var updateTime = function(){  // this stays private to this anonymous function
    this.time = ...
  },
  Timeline = Backbone.Model.extend({
    url: 'servertime/',

    start: function(){
      this.fetch({
        success: function(timeline, response){
          updateTime.call(timeline);
          setInterval(function() {
            updateTime.call(timeline);
          }, 60 * 1000);
        }
      });
    }
  });

})();

Ответ 2

Вы можете сделать updateTime частную функцию, но не частный метод. Я также рекомендую добавить символ подчеркивания, чтобы было ясно, что его частная функция.

(function() {
  function _updateTime(timeline){
    timeline.time = ...
  }

  Timeline = Backbone.Model.extend({
    url: 'servertime/',

    start: function(){
      this.fetch({
        success: function(timeline, response){
          _updateTime(timeline);
          setInterval(function() {
            _updateTime(timeline);
          }, 60 * 1000);
        }
      });
    }
  });

})();