关于js中的call的应用?

我简单理解js中call的用法,是用来改变this指向的。比如:

var fn1=function(){
    console.log(1);
}
var fn2=function(){
    console.log(2);
}
fn1.call(fn2);

这个时候fn2中的this指向fn1,并且输出1.
但是对下面的写法不理解,elements为一个NodeList集合。
var elements=document.querySelectorAll('div');
Array.prototype.forEach.call(elements,(element)=>{
     console.log(element)
});

我不理解的是call中的第二个参数怎么是执行的forEach中的callback呢?
为什么要把callBack放在call里面执行?call中的参数不是这个好像?实在理解不了这种写法?
谢谢。
阅读 1.9k
1 个回答

如果换种写法

Array.from(elements).forEach((element)=>{console.log(element)});

能理解吗
NodeList不是js原生Array,所以要使用Array里的一些方法得需要一些奇怪的技巧

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