关于JS的slice方法和call方法

通过document.getElementsByTagName选择的dom 节点是一种类似array的array。它不能应用Array下的push,pop等方法。我们可以通过:var domNodes = Array.prototype.slice.call(document.getElementsByTagName("*"));这样domNodes就可以应用Array下的所有方法了。

Array.prototype.slice.call(document.getElementsByTagName("*"));这句代码不是很明白,slice()方法不是取数组的元素?

阅读 1.8k
2 个回答

slice如果不传入参数会返回一个浅拷贝数组副本。
call的作用是用document.getElementsByTagName("*")作为slice方法中的this调用一次slice方法;从而把dom列表转换成真正的Array

新手上路,请多包涵

这里就是把.getElementsByTagName()返回的类数组转化成数组 用slice()方法不传参数则索引从0开始即整个类数组都转化成了数组

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题