2025-10-07 04:19:06JavaScriptHTML DOM

getElementsByTagName 和 getElementsByClassName 这两个方法查找多个 dom 元素,返回的是 htmlcollection 类型,是伪数组而不是真数组,故不能使用数组的方法。

我们可以使用数组原型配合 slice 方法,利用 call,apply,bind 方法将伪数组转为真数组。

var x=document.getElementById("main");

var y=x.getElementsByTagName("p");

console.log(y)//在控制台我们可以看到原型proto为htmlcollection,是伪数组

//伪数组转为真数组方法1

console.log(Array.prototype.slice.call(y))//在控制台我们可以看到原型proto为Array(0),是真数组

//伪数组转为真数组方法2

console.log(Array.prototype.slice.apply(y))//在控制台我们可以看到原型proto为Array(0),是真数组

//伪数组转为真数组方法3

console.log(Array.prototype.slice.bind(y)())//在控制台我们可以看到原型proto为Array(0),是真数组

kkk789 kkk789

253***4003@qq.com

5年前 (2020-12-23)