javascript - 了解 JavaScript 和 DOM 'Interfaces'

标签 javascript dom

我正在使用普通的 JavaScript 和 DOM。浏览时MDN ,我遇到了这个词Interface 。根据 MDN,其他 DOM 元素继承有各种基本接口(interface)。这些是HTMLElement , Element , NodeEventTarget 。我理解 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是接口(interface) Element 上的一个属性,根据 MDN。所以如果 Element是一个类(class),clientHeight应该是 Element.prototype.clientHeight ,而不是 Element.clientHeight .

是否可以在我们的 JavaScript 程序中使用这些接口(interface)?如果是这样,正确的方法是什么?有哪些用例?

最佳答案

接口(interface)是面向对象编程中的通用术语。

就像一个类,它定义了必须出现在对象上的功能,但您不能直接使用它。相反,您必须使用实现它的类。

因此您无法创建 HTMLElement 的实例,但由于 Div 实现 HTMLElement 和 Span 实现 HTMLElement 您可以创建 Div 的实例em> Span 和其中任何一个都将满足拥有 HTMLElement 的要求。

接口(interface)通常用于避免多重继承中的问题。一个类可以实现多个具有重叠需求的接口(interface)(假设两个接口(interface)都需要一个 Dance 方法),而如果它扩展两个具有 Dance 的类方法,您需要选择两个父类中的哪一个来忽略哪个父类中的 Dance)。

<小时/>

请注意,JavaScript 没有界面语言功能(尽管 TypeScript does )。该术语仅在 DOM 文档中使用,因为它是用通用 OO 术语编写的,而不是 JavaScript 特定术语。

关于javascript - 了解 JavaScript 和 DOM 'Interfaces',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60149120/

相关文章:

javascript - xmlHttpRequest 和操作表?

jquery - JQM (jQueryMobile) 在changePage() 上将最后一页从 DOM 中推出

javascript - 如何检查网页中的文本是否有粗体

javascript - 将变量设置为与 div 相同的内容

javascript - 在react-native中加载launchChrome.js时出现语法错误

javascript - 如何使用 Bootstrap-datetimepicker 获取 Unix 时间戳

javascript - 使用元素 ID 填充 jQuery UI 自动完成列表

PHP XPATH 评估

javascript - 使用 jQuery 对列表进行数字排序,然后按字母顺序排序?

javascript - 通过单击并水平和垂直拖动带有固定标题的表格滚动