【问题标题】:Why Mozilla has JavaScript documentation written with IDL为什么 Mozilla 有用 IDL 编写的 JavaScript 文档
【发布时间】:2012-11-26 05:20:54
【问题描述】:

阅读有关fileReader 的文档,发现他们使用void 运算符编写方法,如下所示:

void readAsArrayBuffer (
        in Blob blob
);

只是想了解他们为什么要这样写?这种语法有什么实际用途吗?

后来发现根本不是js,而是接口描述语言IDL。

仅供参考:在问这个问题之前,我先用谷歌搜索并阅读 JS 中实际的 void 运算符。所以请没有必要让我回来。问题有点模糊,但它必须处理,为什么 Mozilla 有这样写的关于 JavaScript 的文档?在 IDL 中与实际 JavaScript 几乎没有什么关系?

【问题讨论】:

  • 这不是void 运算符。这是一个void 返回值,这意味着没有返回值。两种不同的东西。
  • 实际上void 返回undefined 并且用于在link 中使用的大多数时候什么都不返回,例如thiscould be helpful
  • W3C DOM API 规范不是用 JavaScript 编写的。这是一种怪异的 IDL 语法,让很多人感到厌烦。
  • 规范在形式上被设计为尽可能抽象。大多数实现者只是使用 JavaScript 的浏览器“只是发生”(当然不是真的)。不知道他们为什么不留下这些抽象的东西(MDN 通常是为浏览器开发人员简化的)。

标签: javascript api idl webidl


【解决方案1】:

Mozilla 以两种方式使用 IDL

  • Web IDL:用于 W3C 规范等描述 Javascript API。这些是规范性规范。

  • XPCOM 内部 IDL 方言:本机 Javascript API 是用 C++ 实现的。在 Gecko(Firefox 的引擎)的情况下,特别是在称为 XPCOM 的特定领域框架中

正如链接页面所述,Gecko 在内部以语言中立的 IDL 方言描述接口,因为这些接口必须在本机运行时 (C++) 和 Javascript 引擎 (Javascript) 中实现。

在这种情况下,IDL 描述是来自原始 Web IDL 规范或 Gecko 内部实现的复制粘贴。

【讨论】:

  • 我很确定接口描述是 WebIDL,而不是源代码的复制过去。
  • 谢谢。澄清了答案。
猜你喜欢
  • 2015-11-29
  • 1970-01-01
  • 2019-09-27
  • 1970-01-01
  • 1970-01-01
  • 2015-04-25
  • 1970-01-01
  • 2011-04-17
相关资源
最近更新 更多