Nic*_*tti 10 javascript dom object
在JavaScript中,所有对象都是真实的(根据规范).在DOM中,此规则有一个例外.它是什么?#jsquiz #fronttrends
有人知道答案吗?
免责声明: 我是那个发推文的人:)这是我在前线趋势谈话中要求和回答的问题.我在上台前5分钟写了推文.
由于Twitter上有140个字符的限制,这个问题有点含糊不清.我问的真正问题如下.
ECMAScript规范定义ToBoolean()如下:

正如您所看到的,所有非基本对象(即所有不是布尔值,数字,字符串undefined或对象的对象null)都符合规范.但是,在DOM中,有一个例外 - 一个虚假的DOM对象.你知道那是哪一个吗?答案是document.all.HTML规范说:
该
all属性必须返回以节点为HTMLAllCollection根的属性Document,其过滤器与所有元素匹配.为所有人返回的对象有几个不寻常的行为:
用户代理必须采取行动,就好像
ToBoolean()在JavaScript操作转换为返回的对象all的false值.对于 JavaScript 中的
==和!=运算符,用户代理必须表现为返回的对象all等于该undefined值.用户代理必须采取行动,以便
typeofJavaScript 中的运算符在'undefined'应用于返回的对象时 返回该字符串all.这些要求是在撰写本文时故意违反JavaScript规范(ECMAScript第5版).JavaScript规范要求
ToBoolean()运算符将所有对象转换为true值,并且没有为对象提供的操作,就好像它们是undefined出于某些运算符的目的一样.这种违规行为的动机是希望与两类遗留内容兼容:一种使用存在document.all作为检测遗留用户代理的方式,另一种仅支持那些遗留用户代理并使用该document.all对象而不首先测试其存在.
因此,document.all这是ECMAScript规则的唯一官方例外.(在Opera document.attachEvent等中也是假的,但在任何地方都没有.)
| 归档时间: |
|
| 查看次数: |
535 次 |
| 最近记录: |