你如何用ES5(2)来描述一个元素

How do you describe an element in terms of ES5 (2)?

本文关键字:一个 元素 描述 ES5 何用      更新时间:2023-09-26

就语言而言,当我从DOM中获取元素时,我会得到什么:

var obj = document.getElementById('foo');

它有属性,所以我认为它可能是一个对象文字。通过类型检查,我确定它不是对象文字,也不是数组文字。

从语言的角度讲,我知道它的用途,以及如何使用它,只是不知道它是什么。

我在这个测试中运行了它,我称之为abstract object的测试。

obj === Object(obj);

它返回错误。

我知道我可以将节点元素识别为这样的

obj.nodeType === 1

但从语言(ES5)的角度来看,这并不能告诉我它是什么。用语言表达的元素是什么?

澄清

我指的是基于语法的语言,JavaScript,Good第二章,这个语法只知道如何处理语言组件、阵列、对象等

Element不是根据ES5定义的。它是DOM API的一部分。

以下是的定义

Element接口表示HTML或XML文档中的元素。

一种语言不必实现ES5规范来实现DOM API接口,而且ES5实现可以是有效的,而不能实现Element。例如,NodeJS执行服务器端JavaScript,而不实现Element。

根据ECMAScript规范,DOM元素是由浏览器的主机环境提供的"主机对象"(下面强调我):

这里定义的ECMAScript不打算在计算上自给自足;实际上,本规范中没有关于外部数据的输入或计算结果的输出的规定。相反,预计ECMAScript程序的计算环境不仅将提供本规范中描述的对象和其他设施,而且还将提供某些特定于环境的主机对象,其描述和行为超出了本规范的范围,只是表明它们可以提供可以访问的某些属性和可以从ECMAScript程序调用的某些函数。

DOM元素的特定属性是由W3C的DOM规范中列出的接口指定的,而不是由ECMAScript规范指定的(尽管通过允许环境提供的主机对象,ECMAScript规范允许它们存在)。

附录:

您添加了一些说明,说明您的困惑源于JavaScript使用语法的事实。我很难理解为什么这会给你带来困惑,但我会尽力澄清的。

JavaScript的语法是词法,即它处理书面代码。编写的代码被解析(使用语法),解析器识别代码中的特定表达式。这些表达式对应于执行环境中的编程操作。

用于引用宿主对象的语法与用于引用本机对象的语法相同。事实上,主机对象就是对象。唯一的区别是主机对象可以指定其内部方法的行为,如[[Get]](用于属性访问)。