我知道HTMLCollection实际上不是一个数组,否则它将被定义为一个数组.我使用一个帮助函数,我调用isArray()来检测对象是否是一个数组.我在整个地方使用这个小助手,并且在检查htmlCollection时我一直在运行这个返回false的问题.
var isArray: function(obj) {
var type = Function.prototype.call.bind( Object.prototype.toString );
return type(obj) === '[object Array]' || type(obj) === '[object HTMLCollection]';
}
Run Code Online (Sandbox Code Playgroud)
在这个辅助函数中检查htmlCollection类型并假设它与数组相同是不是错了?是什么让它与众不同?除了它的html元素而不是javascript对象.
I H*_*azy 27
不,这是一个HTMLCollection
,而不是一个Array
.
它具有类似数组的特性,如数字属性和.length
属性,但它不会继承Array.prototype
.因此它没有标准Array
方法,因此应该被视为不同.
另一个重要区别是,它HTMLCollection
是一个"实时"集合,这意味着它会随着DOM更新而更新.如果从DOM中删除其中一个节点,它将自动从中删除HTMLCollection
.
归档时间: |
|
查看次数: |
14275 次 |
最近记录: |