[英]What's the difference between void, eval, and the Function constructor in JavaScript?
[英]What's the difference between an interface and a constructor function in javascript?
我正在阅读这个关于使用 EventTarget 的问题,并且被这个评论弄糊涂了
EventTarget 只是一个接口,而不是构造函数。 此外,您不能从本机 DOM 结构继承
我认为接口就是 W3C 所说的 javascript“类”。
此外,如果我尝试从 chrome 开发工具控制台中的 DOM Node
函数实例化一个新对象,
var myNode = new Node();
它返回一个错误
未捕获的类型错误:非法构造函数
我知道经典 OOP 中的接口是什么,但我的问题是构造函数和接口(例如 javascript 中的Node
和EventTarget
之间有什么区别?
DOM 接口是在 JavaScript 之外定义的,因为 DOM 可以用多种语言进行操作(曾经有一段时间,除了 JavaScript 之外,VBScript 和 Tcl 还可以在浏览器中使用),这就是为什么 W3C 的 DOM 规范是语言不可知的,DOM 没有'本质上与 JavaScript 没有任何关系。
在跨平台/跨语言 API 中,接口是用 IDL(接口描述语言)这样的语言定义的,这里是定义EventTarget
的 IDL(Webkit 使用的): https : //github.com/adobe/webkit/blob /master/Source/WebCore/dom/EventTarget.idl
JavaScript 本身没有接口的概念(与 C#/Java interface
概念相同),因为它是一种原型语言,它使用 Duck-typing 代替具有静态类型的接口,
JavaScript“类”是 ECMAScript 6 中的一个新特性(JavaScript 规范的下一个主要修订版),但是它可以被认为是一种语法糖,用于简化从相同原型构造函数创建实例的过程,它们也与此不同界面概念。
总之:
interface
,Microsoft Visual C++ 中的__interface
,Swift 和 ObjectiveC 中的protocol
)interface
特性中 1:1 表示,假设语言支持它
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.