интересно получается:
div.onclick = function(){alert('alert')};
div.addEventListener('click', function(){alert('alert')});
div.setAttribute('onclick','alert("alert")');
тремя способами, получается, можно задать одну и ту же реакцию на щелчок по div.
зачем всё по несколько раз дублировать? куча свойств просто заранее уже есть и минимум в двух экземплярах (может кто и еще способ подскажет).  Пока данная ситуация в голове "не улеглась".
let atrMap  = new Map();
    for (let i in div){
       atrMap.set(i,div[i]);
    }
console.error(atrMap.size);  
 let n = 0;
 for (let i in div){
        if (  atrMap.has(i) && (div[i] === atrMap.get(i) ) )
        console.warn(`${i}=>${div.getAttribute(i)}`);
    }
console.error(n);
227 дубликатов получается что ли? притом они полностью идентичны...
две идентичных хэш-таблицы создаются что ли для каждого Node
одна для доступа через точечную нотацию, а вторая set,get 
притом, что onclick из примера выше сработает во всех 3 случаях.