Backbone:ECMAScript 6 中的属性

Backbone: properties in ECMAScript 6

我正在寻找与以下 Backbone 代码等效的良好 ECMAScript 6:

var MyModel = Backbone.Model.extend({});

var MyCollection = Backbone.Collection.extend({
    model: MyModel
});

此模式广泛用于 Backbone 模型、视图和集合。 我可以比下面的代码做得更好吗(例如,通过创建一个名为 "model" 的方法)?

export class MyModel extends Backbone.Model {}

export class MyCollection extends Backbone.Collection {
    constructor() {
        super({model: MyModel});
    }
}

当然,只要不使用class关键字即可:

var MyModel = Backbone.Model.extend({});

var MyCollection = Backbone.Collection.extend({
    model: MyModel
});

这段代码实际上比您编写的 ECMAScript 6 等效代码更可重用。 ECMAScript 6 实际上比原来的差。

您必须了解,在 JavaScript 中,对象可以在没有 类 的情况下存在,并且该功能非常重要。

这是 Douglas Crockford 在 2008 年写的关于原型继承的文章:http://javascript.crockford.com/prototypal.html

我会使用 getter:

export class MyModel extends Backbone.Model {}

export class MyCollection extends Backbone.Collection {
  get model() {
    return MyModel;
  }
}