通常、Toolkit や UI の内部でしか必要ないからでしょうか、
あるようでないのがコールバック管理です
コールバック管理があると、
特定のイベントが発生した際に実行する処理を互いに独立した処理に分離することができます
このスクリプトはコールバック管理オブジェクトのサンプルで、 "Click me!" の領域をクリック操作すると下のチェックボックスに対応した コールバックを呼び出すものです
コールバック管理に要求される機能には以下のものがあるでしょう
そこで、コールバック管理を1つのコールバックを管理する Callback オブジェクトと 複数の Callback を管理する CallbackList オブジェクトに分けて定義します
コンストラクタ: 関数とユーザ引数を登録する new Callback(obj,fnc,userArgList) obj : グローバルオブジェクト fnc : コールバック関数 userArgList : コールバック関数の引数 コールバックの呼び出しメソッド: 登録されている関数を呼び出す 登録されている関数 fnc は以下の形式である fnc(eventArgList,userArgList) call(eventArgList) eventArgList : コールバック呼び出し時の引数 apply(eventArgArray) eventArgArray : コールバック呼び出し時の引数の配列 コールバックの比較メソッド: グローバルオブジェクト、関数、関数の引数の数が同一か調べる compare(callback) callback : コールバックオブジェクト
コンストラクタ: Callbackオブジェクトを管理する new CallbackList(callbackList) callbackList : Callback のリスト 登録メソッド add(callbackList) callbackList : Callback か CallbackList または その配列のリスト 削除メソッド del(callbackList) callbackList : Callback か CallbackList か 関数 またはその配列のリスト 呼び出しメソッド call(eventArgList) eventArgList : コールバック呼び出し時の引数
冒頭のサンプルの場合、コールバック関数がボーダ色を変更するのに必要な情報は 変更対象の要素と配色で、 変更対象はクリック操作時に、配色はチェックボックス操作時に決定されます
コールバックの登録・削除はチェックボックス操作時に行います
<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 オブジェクトは通常使用しないと思いますが、 複雑なスクリプトを組む場合には便利かも
Copyright(c) 2006 ShinSoft. All rights reserved.