0

我正在阅读 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;
});
4

1 回答 1

0

当一个模块返回 anew Object()时,它被认为是一个单例,因为缓存不允许再次加载相同的模块。

因此,我假设您正在查看的集合对象是单例。它已经实例化,因此您不需要这样做。

是我假设您正在质疑的文件。

此外,它不一定是必需的,它只是一个架构决策。这是一篇关于在模块中导出的好文章

于 2014-07-23T19:10:33.320 回答