我正在使用节点 0.8.8 和 express 3.0。
有一个checks
带有几个方法的对象和一个middleware
现在应该用方法填充的空对象,其中每个方法一个方法checks
,基本上执行它的check
- 等效项并带有几个附加参数。
代码如下所示:
var checks = {
baz: function(req, callback) {
console.log('baz');
callback(true);
},
foo: function(req, callback) {
console.log('foo');
callback(true);
},
bar: function(req, callback) {
console.log('bar');
callback(true);
}
};
var middleware = {};
for (var check in checks) {
middleware[check] = function(req, res, next) {
checks[check](req, function(result) {
// ...
});
};
}
但是,无论middleware
我调用什么方法,checks
都会执行包装了最后一个方法的方法。这意味着middleware
,尽管键是正确的,但填充了相同的方法,或者每个方法调用都middleware
执行最后一个方法。
middleware.baz({}, function(){}); // => 'bar'
middleware.foo({}, function(){}); // => 'bar'
middleware.bar({}, function(){}); // => 'bar'
当我执行分配给 的新创建的函数时middleware[check]
,该函数是正确的并包装了我期望的函数。即使我调用middleware[check]
从最后一个循环分配给的函数,结果也符合预期。
for (var check in checks) {
// ...
middleware[check]({}, function(){});
}
// => baz
// => foo
// => bar
我错过了什么?