В Backbone Todo MVC source, родной применять метод работы функции используется для вызова метода Underscore без, и я не понимаю, почему это необходимо.Зачем «применять» необходимые в этом образце приложения todo-mvc?
// Filter down the list of all todo items that are finished.
completed: function() {
return this.filter(function(todo) {
return todo.get('completed');
});
},
// Filter down the list to only todo items that are still not finished.
remaining: function() {
return this.without.apply(this, this.completed());
},
Вызов без выглядывает из места, по сравнению с другими методами Underscore, такие как фильтр. Я дважды проверял с помощью базового источника, чтобы убедиться, что без не был смешан в объект Collection по-разному. Конечно, это не так.
Это как методы подчеркивания привязываться к коллекции:
_.each(methods, function(method) {
Collection.prototype[method] = function() {
var args = slice.call(arguments);
args.unshift(this.models);
return _[method].apply(_, args);
};
});
Как и следовало ожидать - модели из коллекции уже передается в качестве первого аргумента. Кроме того, поскольку методы вызываются в объекте Collection, это будет ограничено правильно.
Я проверил это путем изменения метода к следующему
this.without(this.completed());
И это прекрасно работает.
Что я здесь просматриваю?
Вам не нужно применять в этом случае, так как 'this' для' .without' будет ссылаться на тот же контекст 'this' независимо от – megawac
Вот что я думал. Просто кажется необычным, что это единственный метод в источнике коллекции, который использует. – linstantnoodles
Это не то, что я думаю - вы читали мое сообщение? – linstantnoodles