1
我正在查看连接js库的源代码,他们做了一些有趣的事情。他们将来自proto的所有方法合并到应用程序对象中。这个设计模式是否有名字?这是什么JS设计模式?
function createServer() {
function app(req, res, next){ app.handle(req, res, next); }
utils.merge(app, proto);
utils.merge(app, EventEmitter.prototype);
app.route = '/';
app.stack = [];
for (var i = 0; i < arguments.length; ++i) {
app.use(arguments[i]);
}
return app;
};
我最近偶然发现了这些merge()行。所以我想知道的是,为什么这种mixin方法优于继承?为什么不将proto/connect的原型设置为EventEmitter的一个实例? – matths 2014-04-10 14:33:54
@matths它允许一种*多重继承*很容易。对许多事情来说也更简单,你真的希望代理链是SomeObject - > Iterable - > Cloneable - > Cacheable等 – alex 2014-04-10 23:58:52