侧边栏壁纸
博主头像
SPARK`极客笔录

路漫漫其修远兮,吾将上下而求索

  • 累计撰写 36 篇文章
  • 累计创建 5 个标签
  • 累计收到 4 条评论

目 录CONTENT

文章目录

快速理解javascript中的Array.prototype.forEach

Spark
2019-04-08 / 0 评论 / 0 点赞 / 1 阅读 / 0 字

我们都知道document.querySelectorAll()能够获取dom节点,它返回时的并不是一个真正的数组,而是一个伪数组(NodeList),对于NodeList而言,它里面是没有forEach方法的,于是经常见到一下这种写法

var doms = document.querySelectorAll('#dom');
Array.prototype.forEach.call(doms, function(item) {
      console.log(item)
})

这样将Array原型中方法,赋给要循环的NodeList,通过call改变this指向,传入参数。

  • 至于forEach 方法,它可以接受一个函数参数:
[1,2,3].forEach(function(item) {
    console.log(item)
})

从上面可以看出此时在forEach是数组内置函数,this指向的自然是调用的这个数组(当然并不是说传入的函数内部打印this,那里的this指向的是全局window对象),所以赋予一个数组forEach的时候,需要将this指向这个数组(直接找到原型上的forEach赋予数组)

如果不理解call函数的用法,请点击这里

0

评论区