我正在寻找一个好的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});
}
}
答案 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