关于 HTMLCollections 和命名属性的问题,继续使用?

Question about HTMLCollections and named properties, continue to use?

在引用 HTML 表单中的元素时,我经常使用 name 属性的 name/value。所以,如果表格的名称是“form01”,我指的是写作 document.forms.form01 的表格。这是一个例子:

let title = document.forms.form01.title;
console.log(title.value);
<form name="form01">
  <input type="text" name="title" value="Hello World">
</form>

document.forms 是一个 HTML 集合,但在 DOM Standard #interface-htmlcollection 的文档中它没有提到直接使用名称作为 属性 的可能性(我认为它在这样的集合上被称为“命名 属性”)——就像我使用 document.forms.form01 来引用表单元素时一样。相反,文档实际上指出这是“历史文物”——那么,我应该避免使用它吗?

你能帮我找到这方面的文档吗?要么它是一个可以使用的(不错的)功能,要么它是应该避免的东西。

如果它没有被标记为已弃用或过时的功能,您绝对可以继续使用它!

关于 HTMLCollection 的 MDN Web 文档的其他详细信息如下:

The HTMLCollection interface represents a generic collection (array-like object similar to arguments) of elements (in document order) and offers methods and properties for selecting from the list.


至于 HTMLCollection 中的命名属性(如 @Kaiido pointed out), this section 所述:

The supported property names are the values from the list returned by these steps:

  1. Let result be an empty list.

  2. For each element represented by the collection, in tree order:

    1. If element has an ID which is not in result, append element’s ID to result.

    2. If element is in the HTML namespace and has a name attribute whose value is neither the empty string nor is in result, append element’s name attribute value to result.

  3. Return result.

另请注意 MDN Web 文档上的 NodeList falls under the same section (Old-style collections) as HTMLCollection. See NodeList


前面提到的[LegacyUnenumerableNamedProperties] (as @Kaiido pointed out) only indicates that the named properties are unenumerable (i.e., using Array.from只会return个索引项)。