Javascript Express中间件是否在另一个上下文中运行?

Javascript Express中间件是否在另一个上下文中运行?,javascript,node.js,express,middleware,Javascript,Node.js,Express,Middleware,我正在为express创建一个中间件模块,在“app.use”中使用时,我似乎无法获得要传递的对象属性 此代码将输出“undefined”而不是“foo”。如何使其保留对象属性?在创建对象时返回函数: function test (mytest) { return function (req, res, next) { console.log(mytest); next(); }; }; var s = test('foo'); router.

我正在为express创建一个中间件模块,在“app.use”中使用时,我似乎无法获得要传递的对象属性


此代码将输出“undefined”而不是“foo”。如何使其保留对象属性?

在创建对象时返回函数:

function test (mytest) {
    return function (req, res, next) {
        console.log(mytest);
        next();
    };
};

var s = test('foo');

router.post('/login', s, function (req, res) {
    res.send('test');
});

s.showTest.bind
在您的代码示例中,
s.showTest
的定义在哪里
s
将成为重新设计的
test()
构造函数中的一个函数,因此我不清楚
s.showTest
从何而来。@jfriend00 s.showTest已被构造函数返回的函数替换。您的意思是现在您已经编辑了答案,删除了对
s.showTest
的引用。此外,没有理由再使用
s=newtest('foo')
。您只需执行
s=test('foo')
@jfriend00你知道,很抱歉我犯了一个错误,但是你真的没有增加使用stackoverflow已经很糟糕的内涵。有人犯了一个错误,编辑它,然后继续。我在指出你犯的一个错误,这是很重要的。如果你刚才说:“Thx,我现在已经纠正了”,一切都会好起来的。但我以为你说我的评论是错误的,你的错误从来没有出现过,我对此作出了反应。没关系,我会去别的地方。
function test (mytest) {
    return function (req, res, next) {
        console.log(mytest);
        next();
    };
};

var s = test('foo');

router.post('/login', s, function (req, res) {
    res.send('test');
});