你如何用ES5(2)来描述一个元素
How do you describe an element in terms of ES5 (2)?
就语言而言,当我从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]]
(用于属性访问)。
- 使用clickToggle并在单击另一个元素时关闭元素
- 表追加而不附加最后一个元素
- 滚动到容器中的下一个元素-几乎到了
- 使用CSS或js,使用动态选择器选择任意li的下一个元素
- 按我自己的类克隆另一个元素的内容和顺序
- Javascript获取上一个元素的内容
- 如何通过HTML+CSS中的另一个元素Selector更改元素的属性值
- 在数组中的一个元素上设置多个值
- 无法选择除一个元素外的所有元素
- 使用jquery contains获取一个元素并添加类
- $(.class).empty总是缺少一个元素
- jQuery-将列表项的一个元素移动到同一项的另一个元素中+对我的列表中的每个项执行此操作
- 如何在一个元素动画之后延迟
- jQuery转盘下一个元素没有滑入
- jquery从另一个元素中移除移除
- DIV怎么能像Javascript中的另一个元素一样工作呢
- 当知道同一hiearch中至少有一个元素时,遍历到元素.结构使用jquery
- 使用数据属性将HTML数据复制到另一个元素
- 如何选择给定类的上一个元素
- 动态修改一个元素,使其与给定的选择器匹配