Dojo ScriptSrcIOのJSONPコールバック関数はリクエストする毎に名前が異なっている。Dojoは文字列から関数名を動的に生成しているということだが、どのような方法を使って文字列から関数名を作っているのか? 悔しいが分からなかったのでDojoのソースを読んでみた。
概要を抜き出すと以下のようになる
var fs = new Object(); var count = 0; fs["hoge" + count++] = function(obj) { window.alert(obj.j); } fs.hoge0({j : "JSONP"}); // JSONPと表示
何のことは無い、連想配列のキーとオブジェクトのプロパティが同一のものであることを利用して、メソッドを文字列から動的に作成しているだけである。蓋を開けてみれば大したことをしているわけではないが、余計悔しい…。まだまだ修行が足りないな。