我正在使用 Node.js 并为我的不同对象创建一些模型。这是它们目前外观的简化版本。
var Foo = module.exports = function () {
var values = { type: 'foo', prop1: '', prop2: '' };
function model() {}
model.init = function(val) {
_.extend(values, val);
return model;
}
model.store = function(cb) {
db.insert(values.type, values, cb);
}
model.prop1 = function(val) {
if(!arguments.length) return values.prop1;
values.prop1 = val;
return model;
}
return model;
}
然后我可以这样做:
var foo = Foo();
foo.init({prop1: 'a', prop2: 'b'}).store(function(err) { ... });
很多函数,比如model.init
和model.store
对于每个模型都是相同的,但是它们依赖于闭包中的局部变量,比如values
.
有没有办法将这些函数拉到一个基类中,然后我可以扩展每个模型而不是复制所有这些代码?我想得到这样的结果,但我不确定这个base
类应该是什么样子或使用它来扩展的正确方法Foo
。
var Foo = module.exports = function () {
var values = { type: 'foo', prop1: '', prop2: '' };
function model() { this.extend(base); }
model.prop1 = function(val) {
if(!arguments.length) return values.prop1;
values.prop1 = val;
return model;
}
return model;
}