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

时间:2013-07-26 14:11:46

标签: javascript

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

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

它有属性,所以我想也许它可能是一个对象文字。使用类型检查我确定它不是对象文字,它也不是数组文字。

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

我通过这个测试运行它,我称之为abstract object的测试。

obj === Object(obj);

它返回false。

我知道我可以识别节点元素

obj.nodeType === 1

但就语言而言,这仍然没有告诉我它是什么(ES5)。什么是用语言表达的元素?

澄清

  

我的意思是语言,基于语法,JavaScript,Good   部分,第2章,这个语法只知道如何处理语言   组件,数组,对象等

2 个答案:

答案 0 :(得分:5)

Element未定义为ES5。它是DOM API的一部分。

这是its definition

  

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]](用于属性访问)。