私は 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;
}