gpt4 book ai didi

javascript - 为什么必须设置原型(prototype)而不是直接在函数构造函数中调用方法?

转载 作者:太空宇宙 更新时间:2023-11-04 01:49:05 25 4
gpt4 key购买 nike

我正在深入研究位于 /lib/router/index.js 的 ExpressJS lib,它声明如下:

var proto = module.exports = function(options) {
var opts = options || {};

function router(req, res, next) {
router.handle(req, res, next);
}

// mixin Router class functions
setPrototypeOf(router, proto)

router.params = {};
router._params = [];
router.caseSensitive = opts.caseSensitive;
router.mergeParams = opts.mergeParams;
router.strict = opts.strict;
router.stack = [];

return router;
};

proto.handle = function handle(req, res, out) {
var self = this;

debug('dispatching %s %s', req.method, req.url);

var idx = 0;
var protohost = getProtohost(req.url) || ''
.........
}

我很困惑为什么他们不能通过这样的给定方式直接调用

return function(req, res, next) {
handle(req, res, next);
}

看起来更清晰、更简单了。

最佳答案

因为他们希望将其作为方法调用,以访问 router 实例的所有属性。不可否认,他们本可以使用

handle.call(router, req, res, next)

但是如果您已经从原型(prototype)继承了它,那么为什么不直接将其作为方法调用。

关于javascript - 为什么必须设置原型(prototype)而不是直接在函数构造函数中调用方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50387350/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com