今天看了一下express4.x的代码发现这样的代码
var proto = module.exports = function(options) {
options = options || {};
function router(req, res, next) {
router.handle(req, res, next);
}
// mixin Router class functions
//看这里,router的__proto__应该指向一个Function.prototype,这样router一覆盖,和object.extend有什么区别?
//这样有没有违反原型链
router.__proto__ = proto;
router.params = {};
router._params = [];
router.caseSensitive = options.caseSensitive;
router.strict = options.strict;
router.stack = [];
return router;
};
刚查了一下资料,这种语法是不提倡使用的,router通过原型链可以找到proto的函数,也不知道为啥不提倡,求大神解答,object.extend 是进行一次复制