CallbackList オブジェクト

Click me!
Click me!

解説

通常、Toolkit や UI の内部でしか必要ないからでしょうか、 あるようでないのがコールバック管理です
コールバック管理があると、 特定のイベントが発生した際に実行する処理を互いに独立した処理に分離することができます

このスクリプトはコールバック管理オブジェクトのサンプルで、 "Click me!" の領域をクリック操作すると下のチェックボックスに対応した コールバックを呼び出すものです

コールバック管理に要求される機能には以下のものがあるでしょう

そこで、コールバック管理を1つのコールバックを管理する Callback オブジェクトと 複数の Callback を管理する CallbackList オブジェクトに分けて定義します

Callback オブジェクト

コンストラクタ:
  関数とユーザ引数を登録する

  new Callback(obj,fnc,userArgList)
    obj         : グローバルオブジェクト
    fnc         : コールバック関数
    userArgList : コールバック関数の引数

コールバックの呼び出しメソッド:
  登録されている関数を呼び出す
  登録されている関数 fnc は以下の形式である

    fnc(eventArgList,userArgList)

  call(eventArgList)
    eventArgList  : コールバック呼び出し時の引数

  apply(eventArgArray)
    eventArgArray : コールバック呼び出し時の引数の配列

コールバックの比較メソッド:
  グローバルオブジェクト、関数、関数の引数の数が同一か調べる

  compare(callback)
    callback : コールバックオブジェクト

Callback スクリプト

CallbackList オブジェクト

コンストラクタ:
  Callbackオブジェクトを管理する

  new CallbackList(callbackList)
    callbackList : Callback のリスト

登録メソッド
  add(callbackList)
    callbackList : Callback か CallbackList または その配列のリスト

削除メソッド
  del(callbackList)
    callbackList : Callback か CallbackList か 関数 またはその配列のリスト

呼び出しメソッド
  call(eventArgList)
    eventArgList  : コールバック呼び出し時の引数

CallbackList スクリプト

使用例

冒頭のサンプルの場合、コールバック関数がボーダ色を変更するのに必要な情報は 変更対象の要素と配色で、 変更対象はクリック操作時に、配色はチェックボックス操作時に決定されます

コールバックの登録・削除はチェックボックス操作時に行います

<input type="checkbox" onchange="
  if(this.checked)
    callbacklist.add(new Callback(null,toggleBorder,'#f00','#396'));
  else
    calblacklist.del(toggleBorder);)>ボーダ色変更

クリック操作時には単に要素を渡して callbacklist を実行します

<div onclick="callbacklist.call(this);"></div>

注意とヒント

●Callback オブジェクトは通常使用しないと思いますが、 複雑なスクリプトを組む場合には便利かも