我正在阅读this SO question about using EventTarget,并对此评论感到困惑
EventTarget只是一个接口,而不是构造函数。此外,您不能从本机DOM结构继承
我认为界面就是W3C所谓的javascript"类"
另外,如果我尝试从chrome dev工具控制台中的DOM Node
函数中实例化一个新对象,
var myNode = new Node();
它返回错误
未捕获的TypeError:非法构造函数
我知道接口在经典OOP中是什么,但我的问题是构造函数和接口之间有什么区别,例如javascript中的Node
和EventTarget
?
答案 0 :(得分:4)
DOM接口是在JavaScript之外定义的,因为DOM可以用多种语言进行操作(曾经有一段时间VBScript和Tcl可以在JavaScript之外的浏览器中使用),这就是为什么W3C' DOM规范与语言无关,DOM本身并不与JavaScript有任何关系。
在跨平台/跨语言API中,接口使用IDL(接口描述语言)等语言定义,这里定义EventTarget
的IDL(由Webkit使用):{{ 3}}
JavaScript本身没有接口概念(与C#/ Java interface
相同的概念),因为它是原型语言,它使用Duck-typing代替静态类型的接口,
JavaScript"类"是ECMAScript 6中的一个新功能(JavaScript规范的下一个主要修订版基于),但是它可以被认为是语法糖,可以简化从同一个原型构造函数创建实例,它们也不同于这个接口概念。 / p>
总结:
interface
,Microsoft Visual C ++中的__interface
,Swift和ObjectiveC中的protocol
的语言功能interface
功能中以1:1表示,假设语言支持