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