我正在使用普通的 JavaScript 和 DOM。浏览时MDN ,我遇到了这个词Interface
。根据 MDN,其他 DOM 元素继承有各种基本接口(interface)。这些是HTMLElement , Element , Node和 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
是接口(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/