イベントハンドラの引数
bindAsEventListener()で追加の引数を受け取れないと悩んでいた。最新のリビジョンを見たら理解した。*1
最新バージョンではcall()を使わずにどちらもapply()でやっていた。
で、やっぱりbind()ソースの
args.concat($A(arguments))
の部分が理解できない。args = $A(arguments)とやっているのに、二重にしているような・・と思ったら唐突に理解できた。
カリー化みたいなもんか。
func = bind(obj, arg1, arg2);
とやっておいて
func(arg3, arg4);
とするのか。
でも今使ってるバージョン1.4のbindAsEventListener()は引数を複数取れない。
どうしよう。
実質的な動作としてはbind()もbindAsEventListener()も同じなんだけど、上に書いたように引数の順番が決められる。
最新リビジョンのbindAsEventListener()は、イベントハンドラ関数の引数が
function callback(event, arg1, arg2, ...){...}
のようになるのに対して、bindで行うと
function callback(arg1, arg2, ..., event){...}
になる。なるほど、分かりやすさの点ではbindAsEventListener()関数は意味があるのか。
まぁ・・今のところはbind()でいいか。
*1:昨日の「bind()のソースは$A(arguments)とかやっていてbindAsEventListener()の方はやってないのだが、この違いはまだ理解できていない。」の部分