2016-07-10 6 views
0

に基づいて別の関数を返す関数は、ここで私が達成しようとしているものです:のJavaScript/Node.jsの:パラメータ

た場合のNode.jsアプリケーションの負荷、多くの異なるものが設定されており、例えばrequires.has('message', 'text')が呼び出されます。これは、渡されたデータオブジェクトにmessage.textが含まれているかどうかをチェックする関数を設定する必要があります。

次のコードは、ハンドラを登録します(構文はbot.register(コールバック、要件)です)。

bot.register(irrelevant, [requires.has('message', 'text')]); 

のhttpリクエストが来た場合、すべての要件が実行されていますので、コールバックがrequires.has('message', 'text')から生成されなければなりません。

だから、要するに:

requires.has('message', 'text') 

は、その説明が混乱に聞こえるならば、私はあなたが私が何を意味するか知っている願っています

{ 
    callable: function(data) { // check if data has nodes message and text } 
} 

は申し訳ありませんが返さなければなりません。 ありがとうございます!

答えて

1

あなたがしたいのは、オブジェクトキーとして別の関数を返す関数です。

requires.has = function(parameters) { 
    return { 
    callable: function (data) { 
     // your implementation, has access to parameters & data variables 
    } 
    }; 
}; 
+0

ああ、実際には上位変数にアクセスできますか?それがうまくいくなら、素晴らしい。私はそれを試してみましょう... – 22samuelk

+2

もちろん、JS変数は、前のスコープで定義されたすべての変数にアクセスできます。私はあなたがJSを読んでみることをお勧めします(スコープとクロージャについての少なくとも一部) - 名前に惑わされず、実際には素晴らしい本です.GitHubで無料で利用できます:https:// github.com/getify/You-Dont-Know-JS/blob/master/scope%20&%20closures/README.md#you-dont-know-js-scope--closures – Iso

+0

ええ、私は知っています...それはまだ私はコール可能な関数自体が完全に他のどこかから呼ばれているので、ちょっと混乱しています。そして、そこにあるコードが外部変数へのアクセスも持っているということは、必ずしも私には意味がありません。私が何を意味しているか知っていれば。ありがとうございました! – 22samuelk

関連する問題