prototype.jsのbind
hawkさんにコメントをいただいたのでコードの見直し。
どの部分で問題になってたのか忘れてしまったorz
でも数カ所で
obj.func1 = function(element){ var obj = this; Event.observe(element, 'onclick', function(e){ obj.func2(); }); } obj.func2 = function(){...}
とやってる。
これはbindを使うべき・・なのかな。
bindって使ったことなかったけど
Event.observe(element, ’event’, (function(){...}).bind(element))
function(){...}のthisがelementに固定されるわけか・・。これをelementじゃなくて呼び出しているオブジェクト自身にしようと思えばthisと書くだけでいいのかな?スコープの範囲が変わってるわけではないからthisでいいんだろう(たぶん
bindAsEventListener()も使っていった方がすっきりしそうだけど、もうちょっと理解が追いついてからにしよう・・。