【发布时间】:2017-03-09 04:36:44
【问题描述】:
我正在用 Javascript 编写域对象,其中填充了数据库字段。假设我有两个对象dog 和cat,并且我有以下构造函数定义:
function Dog(opt_data) {
var data = opt_data || {};
this.createdAt = data['created_at'];
this.updatedAt = data['updated_at'];
this.name = data['name'];
this.breed = data['breed'];
}
function Cat(opt_data) {
var data = opt_data || {};
this.createdAt = data['created_at'];
this.updatedAt = data['updated_at'];
this.name = data['name'];
this.fur = data['fur'];
}
现在,以上两个对象都有craetedAt 和updatedAt 属性。那么,我应该创建一个新类BaseModel,它具有属性并让所有对象都继承它,还是在javascript中有更好的替代方案来实现这种模式?
更新 1:
我的理解来自cmets和答案。
function Cat(opt_data) {
var data = opt_data || {};
this.name = data['name'];
this.fur = data['fur'];
this.updateTimestamp(data);
}
Cat.prototype = Object.create({
updateTimestamp: function(data) {
this.createdAt = data['created_at'] || new Date();
this.updatedAt = data['updated_at'] || new Date();
}
});
【问题讨论】:
-
both of the above objects have craetedAt and updatedAt properties不在您发布的代码中。 -
除非你发现你需要别的东西,否则去简单的鸭子打字。
-
@Bergi 你能举个例子吗?
-
@CodeYogi 你已经做了,你的代码很好。如果您不这么认为,请告诉我们您需要如何处理您的实例。
-
@Bergi 您可以看到我有一组通用属性,这些属性将出现在我创建的每个对象上,您不认为这是重复代码并且容易出错吗?
标签: javascript object design-patterns