JavaScript中的接口是什么?

许多 MDN 页面将事物描述为“界面”——我很惊讶“界面”没有链接到更解释性的页面;它只是在 MDN 的Web API 页面上描述为“对象类型” 。

回答

界面描述了对象的形状。(它有什么属性,这些属性包含什么类型的值等)它不是一个对象本身——它是对实现接口的特定对象是什么样子的更抽象的描述。

例如,在 HTML 标准中,DragEvent 接口是这样描述的:

[Exposed=Window]
interface DragEvent : MouseEvent {
  constructor(DOMString type, optional DragEventInit eventInitDict = {});

  readonly attribute DataTransfer? dataTransfer;
};

dictionary DragEventInit : MouseEventInit {
  DataTransfer? dataTransfer = null;
};

所以DragEvent是一种类型的MouseEvent(这是另一种接口)。它有一个构造函数,这样你就可以调用newwindow.DragEvent。调用构造函数时,您使用以下参数调用它:

  • type,这是一个DOMString(基本上只是任何普通字符串)
  • 类型的可选参数DragEventInit(文档定义),默认为空对象

DragEvent 实例也有一个dataTransfer 属性


请注意,您要链接到的“接口”定义并不完全是 JavaScript 的东西,而是更像是 Web API 的东西。在浏览器之外的其他 JavaScript 实现中(例如,在 Node 中),接口可能意味着不同的东西(或根本没有意义)。

TypeScript 是一种广泛使用的 JavaScript 静态类型检查器,它具有非常相似的接口概念,用于描述特定对象的形状。例如:

// Define the shape of a Foo object
interface Foo {
  prop: string;
}

// Create an object that implements Foo
const someFoo: Foo = {
  prop: 'somevalue'
};


以上是JavaScript中的接口是什么?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>