var Model = function(client, collection) {
this.client = client;
this.collection = collection;
};
Model.prototype = {
constructor: Model,
getClient: function(callback) {
this.client.open(callback);
},
getCollection: function(callback) {
var self = this;
this.getClient(function(error, client) {
client.collection(self.collection, callback);
});
},
extend: function(key, fn) {
var self = this;
this[key] = function() {
fn.call(self); // A
};
}
};
我想要实现的是我可以“扩展”模型的功能。
var userModel = new Model(client, 'users');
userModel.extend('create', function(data, callback) {
this.getCollection(function(error, collection) {
collection.insert(data, { safe: true }, function(error, doc) {
callback.call(doc);
});
});
});
userModel.create({ fullName: 'Thomas Anderson' }, function() {
console.log(this); // { _id: '123456789012345678901234', fullName: 'Thomas Anderson' }
});
在 A 的某个地方,我必须进行参数传递,自定义“创建”函数(数据和回调)的参数计数是可变的。
这可能吗?如果可以,怎么办?