就语言而言,当我从DOM中获取元素时,我会得到什么:
var obj = document.getElementById('foo');
它有属性,所以我想也许它可能是一个对象文字。使用类型检查我确定它不是对象文字,它也不是数组文字。
我知道它的用途是什么,以及如何使用它,从技术角度来讲,它不是什么用语言。
我通过这个测试运行它,我称之为abstract object
的测试。
obj === Object(obj);
它返回false。
我知道我可以识别节点元素
obj.nodeType === 1
但就语言而言,这仍然没有告诉我它是什么(ES5)。什么是用语言表达的元素?
澄清
我的意思是语言,基于语法,JavaScript,Good 部分,第2章,这个语法只知道如何处理语言 组件,数组,对象等
答案 0 :(得分:5)
Element
未定义为ES5。它是DOM API的一部分。
Element接口表示HTML或XML文档中的元素。
语言不必实现ES5规范来实现DOM API接口,而且 - ES5实现可以是有效的而不是实现Element
。例如,NodeJS执行服务器端JavaScript并且不实现Element。
答案 1 :(得分:3)
就ECMAScript规范而言,DOM元素是浏览器主机环境提供的“host objects”(下面重点介绍):
此处定义的ECMAScript无意在计算上自给自足;实际上,本说明书中没有规定输入外部数据或输出计算结果。相反,预计ECMAScript程序的计算环境不仅会提供本规范中描述的对象和其他工具,还会提供某些特定于环境的主机对象,其描述和行为超出了本规范的范围< / strong>除了表明它们可能提供可以访问的某些属性以及可以从ECMAScript程序调用的某些函数。
DOM元素的特定属性由W3C's DOM specification中的接口指定,而不是由ECMAScript规范指定(尽管ECMAScript规范允许存在,通过允许环境提供的宿主对象。)
<强>附录:强>
您已经添加了一些说明,您的混淆源于JavaScript使用语法的事实。我很难理解为什么会给你造成混乱,但我会尽力清理。
JavaScript的语法是 lexical ,即它处理书面代码。编写的代码(使用语法)解析,解析器识别代码中的特定表达式。这些表达式对应于执行环境中的编程操作。
用于引用宿主对象的语法与用于引用本机对象的语法相同。实际上,主机对象是一个对象。唯一的区别是宿主对象可以specify the behavior of its internal methods,例如[[Get]]
(用于属性访问)。