ノード 0.8.8 を Express 3.0 と一緒に使用しています。
いくつかのメソッドを持つオブジェクトchecks
と、メソッドで満たされるべき空のオブジェクトmiddleware
があります。 の各メソッドに 1 つのメソッドが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
私は何が欠けていますか?