ログ日記

作業ログと日記とメモ

イベントハンドラの引数

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()の方はやってないのだが、この違いはまだ理解できていない。」の部分