【问题标题】:Why is Comment an interface/class?为什么 Comment 是一个接口/类?
【发布时间】:2021-11-02 04:11:58
【问题描述】:

我是 Web 开发的初学者,所以我正在阅读 MDN Web Docs 和 Chromium 源代码,以了解 Javascript DOM HTML 元素类是如何工作和实现的,我发现 HTML 注释元素实际上是接口/类(我不知道为什么在 MDN 中,如果它有构造函数,它被称为接口)(https://developer.mozilla.org/en-US/docs/Web/API/Comment)。为什么会这样?不是很浪费空间吗?

【问题讨论】:

  • 许多 web Interface 类型都有构造函数。
  • 我认为他们使用术语“接口”的方式与在 OO 语言中使用的方式不同。
  • “我是 Web 开发的初学者,所以我正在阅读 [...] Chromium 源代码”哇!你是我所知道的最疯狂的初学者(以一种好的方式)。

标签: javascript html dom comments


【解决方案1】:

与许多语言不同,HTML cmets 是标记的一部分。您可以动态生成它们并将它们插入到 DOM 中,就像您可以对任何其他节点执行的操作一样。

这可能很有用,例如,对于修改 DOM 但希望保留 cmets 以提高可读性的库。一些框架实际上使用 cmets 来帮助他们跟踪不同的节点或节点列表。

以下示例说明了如何在网页的 HTML 中动态生成评论。如果您在任何网页中运行这两行代码,您会在 body 元素的底部找到一个新的 <!-- Hello World! --> 注释:

const myComment = new Comment('Hello World!')
document.body.appendChild(myComment)

保留 cmets 的能力实际上并不是 HTML 独有的,其他标记解析库将为您提供这种能力,正是为了在您动态修改标记时保留它们。例如,查看此yaml parser,它将在解析时自动为您保留 cmets。

【讨论】:

    【解决方案2】:

    (注释节点的)“接口”是指在规范中使用 IDL(“接口定义语言”)提供的属性方法和/或性质的描述。换句话说,这里使用的“接口”意味着“它公开的内容,如果有的话”,并且暗示它是如何工作的。

    小心在编程语言的上下文中解释 IDL 定义的上下文中的“接口” - IDL 的整个想法是允许规范编写独立特定的编程语言。

    评论接口的规范可以阅读DOM3规范here

    【讨论】:

      猜你喜欢
      • 2015-08-02
      • 2011-10-06
      • 1970-01-01
      • 1970-01-01
      • 2010-11-04
      • 1970-01-01
      • 2014-09-16
      • 2013-05-24
      • 2016-12-31
      相关资源
      最近更新 更多