2009-03-05 6 views
5

コールバックの定義:

コンポーネント内でプロパティとして設定される関数です。通常、コンポーネントでイベントが発生すると呼び出されます。例についてはこれはコールバックの定義に合っていますか?

ユーザーがコンポーネントcomponentBをクリックしたときに、あなたがこれを行い、変数として格納された方法を記述します「私がクリックされた」を読み込みダイアログを表示したい場合:

var mouseDownCallbackFunction = function() { 
    alert("I was clicked!"); 
}; 

、あなたはとても...

などのコンポーネント内でこの機能を設定します

そして、これはmouseDownCallbackFunctionは、コンポーネントがクリックされたとき、警告ボックスにを「私がクリックされた」を表示する原因となります。

+0

これを実行するとどうなりますか? – cbrulak

+0

このコードが実行された後、ユーザーがコンポーネントをクリックすると、「私はクリックされました」というダイアログが表示されます – leeand00

+0

lambdaは匿名関数を使用してコードを少し減らすことができます。 componentB.setMouseDownCallback(function() { アラート(「私はクリックされました!"); }); – svinto

答えて

2

Cでは、有効なコールバックになります。しかし、私はそれがそうであるかどうかを言うためにJavaScriptとはあまり親しいものではありません。なぜなら、変数がメモリロケーションに関してどのように扱われるかわからないからです。

void aFunction() 
{ 
    do stuff 
} 

int main() 
{ 
    void* myCallback = &aFunction; 
    componentB.setMouseDownCallback(myCallback); 
} 

が動作します:あなたがvoidポインタを宣言することができ、C/C++で

しかし、JavaScriptの知識の私の不足にもかかわらず、私は

componentB.setMouseDownCallback(function() { 
     alert("I was clicked!"); 
     }; 
); 

が同様に有効であることを知っています。それが参照されている範囲内の任意の変数にバインドすることができますので、「私はそれほど慣れていないよ」JavaScriptで

+0

ありがとう!私はC++の店で働いていて、私は彼らのウェブの男だ...これは大いに役立つだろう – leeand00

+0

私は助けてくれると嬉しいです。 – cbrulak

+0

おかげさまで@Victor私は自分自身をコミットしました:) – cbrulak

-1

はい、それはコールバックです。

3

はい、これが記述されたコールバックの正確な定義...

2

はい、コールバックは、それが呼び出されるよりも高いレベルで定義されています機能です。クライアントコードは関数を作成し、componentBが後で呼び出すために、パラメータとしてcomponentBに渡します。

2

、技術的に、それは、閉鎖です:

EDITは、第二文にない追加しました。

しかし、クロージャは単にコールバックのより良い形式なので、それはコールバックです。 Cのコールバックはよりプリミティブであり、型付き関数へのポインタ参照のみを提供し、コンテキストにバインドすることはありません。

+0

うん...その後、クローズとコールバックとの違いはどうですか? – leeand00

+0

...ここで質問してください:http://stackoverflow.com/questions/615907/how-is-a-closure-different-from-a-callback – leeand00

+0

もう一つの質問はよく答えられています。クロージャのバインディング変数に対して、Cコールバックは単なるファンクションポイントです。 –

関連する問題