express里这样的写代码合理吗
发布于 11 年前 作者 dlutwuwei 3768 次浏览 最后一次编辑是 8 年前

今天看了一下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 是进行一次复制

回到顶部