I want to be able to use a bound event handler in prototype and retain my "this" context. But doing so seems to destroy the convenient default binding that prototype gives event handlers.

From the docs:

The handler's context (this value) is set to the extended element being observed (even if the event actually occurred on a descendent element and bubbled up).

That's exactly what I want. Once I bind the function to my own context, can I get access to this "element being observed" in any way? I can't depend on e.element() to give me the observed element (it could be a child element):

However, if you want to use a class method as the event handler, and thus need to use .bind, then the solution is to include the observed element's identifier as one of the arguments to the event handler when you first bind the event, like so:

That said, for sake of consistency I'd suggest you use .bindAsEventListener instead of .bind, and change your event handler to function (evt, el) { so that the event object is the first argument and the observed element the second.

I too had this problem recently. My answer was to wrap the function in another function that does the work you need. I may have messed up the order but curry will add this to the args of the anonymous function and then you re-order from there.