bindAsEventListener 改
JavaScriptではラムダがガンガン使えるけど、イベントハンドラから呼び出される関数のコンテキストthisには必ずイベントオブジェクトが入るためにOOしにくい。くそ。
これを解決するのにprototypeにbindAsEventListenerがあるけど値を戻せない。
Function.prototype.bindAsEventListenerEx = function(object) { var __method = this; return function(event){ event = event || window.event; var target = event.target || event.srcElement var retval = __method.apply(object, [target, event]); if (typeof(retval) != 'undefined' && !retval){ if (document.all){ event.returnValue = false; } else if (event.preventDefault){ event.preventDefault(); } return false; } } };
オブジェクトの中で、
var target = document.getElementsById('sample'); target.onclick = function(target, event){ alert( target ); }.bindAsEventListenerEx(this);
とかする。