Never seen the .apply method before. Can someone explains to me what it does? This is taken from http://addyosmani.github.com/backbone-fundamentals/
var app = app || {};
var TodoList = Backbone.Collection.extend({
model: app.Todo,
localStorage: new Backbone.LocalStorage(’todos-backbone’),
completed: function() {
return this.filter(function( todo ) {
return todo.get(’completed’);
});
},
remaining: function() {
return this.without.apply( this, this.completed() );
},
nextOrder: function() {
if ( !this.length ) {
return 1;
}
return this.last().get(’order’) + 1; },
comparator: function( todo ) {
return todo.get(’order’);
}
});
app.Todos = new TodoList();
The function object comes with
apply()
andcall()
methods. They both effectively do the same thing, except slightly differently. What they do is allow you to define thethis
pointer inside of that function's scope. So for example, if you do:In both methods, you pass the
this
pointer as the first parameter. In thecall()
method, you pass all subsequent parameters in sequential order after that, such that the second argument becomes the first parameter of myFunc. In theapply()
method, you pass the extra parameters in as an array.