一个伪数组是没有数组原型上的方法的,就比如下面的li集合,它打印出来是一个HTML集合,但是也有length方法和下标,通过两种方法将它转换成数组,本质上都一样,修改函数执行时的argument。
<body>
<div id="test">这是一个测试用例</div>
<ul id='container'>
<li>one</li>
<li>two</li>
<li>three</li>
</ul>
</body>
<script>
const Lilist = document.getElementsByTagName('li')
console.log(Lilist)
console.log(Lilist instanceof Array,Lilist[1]
.innerHTML='change',Lilist.slice)
// 但是Listlist不是object类型,他是"object"类型,
//是一个集合类型,这时候就不能
//用数组的方法去直接遍历,
let newList = [].slice.call(Lilist)
//修改argument为Lilist,本来调用者是[],修改它的调用者
console.log(newList instanceof Array)
console.log(newList)
//或者直接修改用原型
let test = Array.prototype.slice.call(Lilist)
console.log(test)
</script>
文档中的说明