Test name | Executions per second |
---|---|
Delegation | 2138.0 Ops/sec |
Targetting | 350.9 Ops/sec |
<!--your preparation HTML code goes here-->
const buttons = Array.from({length: 10000}, () => document.createElement('button'))
const events = new Map()
const addListener = (event, target, listener) => {
let targets = events.get(event)
if (targets === undefined) {
targets = new Map()
events.set(event, targets)
}
let listeners = targets.get(target)
if (listeners === undefined) {
listeners = new Set()
targets.set(target, listeners)
}
listeners.add(listener)
}
buttons.forEach((target) => {
addListener('click', target, console.log)
addListener('focus', target, console.log)
addListener('blur', target, console.log)
})
buttons.forEach((button) => {
button.addEventListener('click', console.log)
button.addEventListener('focus', console.log)
button.addEventListener('blur', console.log)
})