prototype.jsのイベント処理

var obj = new TheClass();

var btn = new Element('button');
btn.innerHTML = '押してね♪'
btn.observe('click',function(){
  // objへthisでアクセス可能な関数が記述できる
}.bind(obj))

bind(obj)と、最後に書くだけでイベントハンドラ内のthis変数を通してobjにアクセスできるようになる。
普通は

btn.observe('click',obj.method.bindAsEventListener(this))

bindとbindAsEventListenerとの違いは、イベントハンドラ内でイベントオブジェクトを弄るかどうか。
まぁ、後者を使っておけばとくに問題ないよ。

最近のお気にいりは、引数を関数内に束縛する方法

btn.observe('click',(function(i){
  return function(){alert(i++)}
})(0))