この類は手短に済ませようとaddEvent関数内でクロージャー化したり匿名関数にしてしまうことが多いのですが、IEのメモリリークを防ぐには外に出す必要があります。こうすれば、F5ボタンやリロードボタンでリロードを繰り返しても生成時間はさほど変化なくメモリリークを起こしていないことが伺えます。
function addEvent(obj, evType, fn){
if(!obj["_"+evType]){
obj["_"+evType] = [];
if(obj["on" + evType] != null) obj["_"+evType].push(obj["on" + evType]);
obj["on" + evType] = evokeEvent;//このように関数外に出す
} else for(var i in obj["_"+evType]) if(obj["_"+evType][i]===fn) return;
obj["_"+evType].push(fn);
};
function evokeEvent(e){//このように関数外で定義
var e = e || window.event;
for(var i in this["_"+e.type]) this["_"+e.type][i].apply(this,[e]);
};