我正在阅读 todomvc Backbone依赖示例,并注意到“new”运算符用于创建新集合,但是视图、模型和路由器返回对象本身。
为什么集合需要 new 运算符?
收藏
/*global define */
define([
'underscore',
'backbone',
'backboneLocalstorage',
'models/todo'
], function (_, Backbone, Store, Todo) {
'use strict';
var TodosCollection = Backbone.Collection.extend({
// Reference to this collection's model.
model: Todo,
// Save all of the todo items under the `"todos"` namespace.
localStorage: new Store('todos-backbone'),
// Filter down the list of all todo items that are finished.
completed: function () {
return this.where({completed: true});
},
// Filter down the list to only todo items that are still not finished.
remaining: function () {
return this.where({completed: false});
},
// We keep the Todos in sequential order, despite being saved by unordered
// GUID in the database. This generates the next order number for new items.
nextOrder: function () {
return this.length ? this.last().get('order') + 1 : 1;
},
// Todos are sorted by their original insertion order.
comparator: 'order'
});
return new TodosCollection();
});
模型
/*global define*/
define([
'underscore',
'backbone'
], function (_, Backbone) {
'use strict';
var Todo = Backbone.Model.extend({
// Default attributes for the todo
// and ensure that each todo created has `title` and `completed` keys.
defaults: {
title: '',
completed: false
},
// Toggle the `completed` state of this todo item.
toggle: function () {
this.save({
completed: !this.get('completed')
});
}
});
return Todo;
});