Как добавить частную функцию в модель 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);
}
});
}
});
})();