Понимание JavaScript и DOM 'Интерфейсы' - PullRequest
0 голосов
/ 10 февраля 2020

Я играю с ванилью JavaScript и DOM. Просматривая MDN , я наткнулся на термин Interface. В соответствии с MDN существуют различные базовые интерфейсы c, от которых наследуются другие элементы DOM. Это HTMLElement , Элемент , Узел и EventTarget . Я понимаю концепцию Class в JavaScript, но что означает Interface в JavaScript? Я попытался поиграться с интерфейсом HTMLElement, но получил ошибки.

const myElem1 = new HTMLElement('div')
const myElem2 = new HTMLElement('')

Оба приведенных выше утверждения выдают ошибку Uncaught TypeError: Illegal constructor. Кроме того, Interface не похоже на Class. Рассмотрим этот код:

const elmnt = document.getElementById("myDIV");
const height = elmnt.clientHeight

clientHeight - это свойство интерфейса Element согласно MDN. Таким образом, если Element был классом, clientHeight должен был быть на Element.prototype.clientHeight, а не на Element.clientHeight.

Возможно ли использовать эти интерфейсы в нашей программе JavaScript? Если да, то каков правильный путь и каковы некоторые варианты использования?

1 Ответ

2 голосов
/ 10 февраля 2020

Интерфейс - это общий термин в ОО-программировании.

Это как класс, в котором он определяет функции, которые должны появляться в объекте, но вы не можете использовать его напрямую. Вместо этого вы должны использовать класс, который его реализует.

Таким образом, вы не можете создать экземпляр HTMLElement, но поскольку Div реализует HTMLElement, а Span реализует HTMLElement, вы можете создайте экземпляр Div или Span, и любой из них будет удовлетворять требованию иметь HTMLElement.

Интерфейсы обычно используются, чтобы избежать проблем в множественном наследовании. Класс может реализовывать несколько интерфейсов, которые имеют перекрывающиеся требования (скажем, для обоих интерфейсов требуется метод Dance), тогда как если он расширен , то два класса, которые имеют метод Dance, вам нужно будет выбрать, какой из двух родительские классы для получения Dance от игнорируемого).


Обратите внимание, что JavaScript не имеет функции языка интерфейса (хотя TypeScript делает ). Термин просто используется в документации DOM, так как он написан в общих терминах ОО, а не в JavaScript указанных c терминах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...