我知道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]';
}
在这个帮助器函数中检查htmlCollection类型并假设它与数组是一样的是错误的吗?它有什么不同之处?而不是其html元素,而不是javascript对象。
发布于 2012-10-07 23:33:20
不,这是HTMLCollection
,不是Array
。
它具有类似数组的特征(如数字属性)和.length
属性,但它不是从Array.prototype
继承的。因此,它没有标准的Array
方法,因此应该被看作是不同的。
另一个重要的区别是,HTMLCollection
是一个“实时”集合,这意味着它会随着DOM的更新而更新。如果从DOM中删除它的一个节点,它将自动从HTMLCollection
中删除。
发布于 2013-04-25 06:07:31
如果你正在考虑数组转换,请参考这篇文章:
Most efficient way to convert an HTMLCollection to an Array。
他们讨论了一些方法,所选答案中的解决方案在我经历过的情况下也有效。
https://stackoverflow.com/questions/12770147
复制相似问题