class Event {
}
class EventTarget {
constructor () {
this.listeners = {}
}
getEventListeners (event) {
return this.listeners[event] || (this.listeners[event] = new Set())
}
addEventListener (event, listener) {
this.getEventListeners(event).add(listener)
}
removeEventListener (event, listener) {
this.getEventListeners(event).delete(listener)
}
dispatchEvent (event, ...args) {
this.getEventListeners(event).forEach(listener => listener(...args))
}
}
class Element extends EventTarget {
}
class HTMLElement extends Element {
click () {
this.dispatchEvent('click', new Event())
}
}
class HTMLDivElement extends HTMLElement {
}
const div = new HTMLDivElement() // тоже что в браузере document.createElement('div')
div.addEventListener('click', e => console.log(e))
div.click()
// когда в системе стоит ru-RU
function getDateFormat () {...}
expect(getDateFormat()).toBeEqual({
format: 'дд.мм.гггг',
day: 'дд',
month: 'мм',
year: 'гггг'
})
проблема в том, что при использовании ООП в UI-компонентах, все потомки становятся очень хрупкими.вы имеете ввиду наследование как в SuperButton1 или в целом?