Backbone:ECMAScript 6中的属性

时间:2015-07-02 20:02:16

标签: javascript backbone.js ecmascript-6

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

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});
    }
}

2 个答案:

答案 0 :(得分:3)

我会使用吸气剂:

export class MyModel extends Backbone.Model {}

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

答案 1 :(得分:0)

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

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

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

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

你必须明白,在JavaScript中,对象可以在没有类的情况下存在,而且这个特性非常重要。

以下是道格拉斯·克罗克福德在2008年撰写的有关原型继承的文章:http://javascript.crockford.com/prototypal.html