Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
理解JavaScript和DOM';接口';_Javascript_Dom - Fatal编程技术网

理解JavaScript和DOM';接口';

理解JavaScript和DOM';接口';,javascript,dom,Javascript,Dom,我正在玩香草JavaScript和DOM。在浏览时,我发现了术语接口。根据MDN,有各种基本接口,其他DOM元素从中继承。这些是,和。我理解JavaScript中类的概念,但是接口在JavaScript中意味着什么?我试着使用HTMLElement接口,但出现了错误 const myElem1 = new HTMLElement('div') const myElem2 = new HTMLElement('') 上面的两个语句都抛出错误uncaughttypeerror:非法构造函数。另外,

我正在玩香草JavaScript和DOM。在浏览时,我发现了术语
接口
。根据MDN,有各种基本接口,其他DOM元素从中继承。这些是,和。我理解JavaScript中
的概念,但是
接口
在JavaScript中意味着什么?我试着使用
HTMLElement
接口,但出现了错误

const myElem1 = new HTMLElement('div')
const myElem2 = new HTMLElement('')
上面的两个语句都抛出错误
uncaughttypeerror:非法构造函数
。另外,
接口
似乎不是类。考虑这个代码:

const elmnt = document.getElementById("myDIV");
const height = elmnt.clientHeight
根据MDN,
clientHeight
是接口
元素
上的一个属性。因此,如果
Element
是一个类,
clientHeight
应该在
Element.prototype.clientHeight
上,而不是在
Element.clientHeight


可以在我们的JavaScript程序中使用这些接口吗?如果是这样,正确的方法是什么?一些用例是什么?

接口是OO编程中的一个通用术语

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

因此,您不能创建HtmleElement的实例,但由于Div实现HtmleElement,而Span实现HtmleElement,因此您可以创建Div或Span的实例,并且两者都满足拥有HtmleElement的要求

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



请注意,JavaScript没有接口语言特性(尽管如此)。这个术语只在DOM文档中使用,因为它是用一般的OO术语编写的,而不是JavaScript特定的术语。

更正:JavaScript确实具有继承性,并且这些接口不仅仅在文档中使用。您可以执行类似HTMLDevice的
document.createElement('div')instanceof
@AlexeyLebedev的操作-这是一个打字错误。我的意思是接口。@Dexygen-mixin通常是实现接口所需功能的常用方法。但是,即使是
instanceof
提供的有限级别,也不支持类型检查。