JavaScript中document.all是对象还是函数?
document.all 的类型归属判定 按照JavaScript常规类型分类规则判定,document.all 属于对象,不属于函数类型,判定依据如下:
- 常规JS类型判定里,函数类型最直接的识别特征是
typeof运算返回"function",但对document.all执行typeof得到的返回值是"undefined",完全不符合函数类型的判定标准。 - 从现行Web标准定义来看,
document.all是专门保留的历史遗留类数组集合对象,作用是兼容早年针对旧版IE编写的网页脚本,本质是页面内所有DOM元素的集合,和document.forms、document.images这类DOM集合对象属于同一分类。 - 它的行为完全匹配普通集合对象的特征:自带
length属性,支持通过索引、元素id/name属性访问集合内的具体DOM节点,不具备函数类型的标准属性——既没有函数实例默认携带的prototype属性,也不能直接使用函数原型上挂载的call()、apply()等内置方法。
补充说明:早期IE的私有实现里曾支持把
document.all作为调用入口传参使用,但这属于单个浏览器的非标准兼容逻辑,不代表规范层面的类型定义,不能作为类型判定的通用依据。
内容的提问来源于stack exchange,提问作者Melab
相关产品推荐
相关产品推荐

