Мне тут стало интересно — как на практике реализовать такую штуку? Правильный полифилл matchMedia по спеке. Сложность в следующем:
matchMedia() возвращает экземпляр MediaQueryList. При этом MediaQueryList нельзя нормально использовать как конструктор: TypeError: Illegal constructor. В спеке говорится, что у класса есть два ридонли свойства:
media — текст, содержит медиазапрос.
matches — булев, собственно, результат.
Браузер говорит, что эти свойства являются геттерами, а сеттеры не установлены. Получается, что matchMedia() создаёт объект с прототипом MediaQueryList.prototype и пишет в него нужные свойства. При попытке вызова addListener() или removeListener() в консоль валится TypeError: 'addListener' called on an object that does not implement interface MediaQueryList. Так. А вот здесь по-подробнее, пожалуйста. Т.е. MediaQueryList тупо реализует механизм интерфейса, который ругается, если мы используем непереопределённое свойство/метод, и ему, в общем-то, пофиг, как я выполню конечную реализацию, главное — чтобы всё было на своих местах?
Да, думаю ему достаточно имплементации нужного интерфейса. Но интерфейс там немаленький
Дима
Anonymous
Igor
Svyatoslav
🦥Alex Fails
Gordey
Михаил
Narek