javascript – “[] .forEach”?

前端之家收集整理的这篇文章主要介绍了javascript – “[] .forEach”?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在其他地方看到这个脚本,它会检查每一个复选框:
[].forEach.call(document.querySelectorAll('input[type="checkBox"]'),function(el){
       el.checked=true;
    }
);​

我知道如何使用forEach

[0,1,2].forEach(function(num){
    console.log(num);
});

//0
//1
//2

但是现在,这是[].那为什么它仍然工作?为什么我不能这样做呢?

document.querySelectorAll('input[type="checkBox"]').forEach(function(el){
       el.checked=true;
    }
);​

解决方法

JavaScript具有一流的功能;也就是说,它们被视为对象,可以拥有自己的属性方法.内置的 Function.call方法将该函数的参数作为其第一个参数,其余的参数将传递给函数本身.除了作为访问(不太简洁,因此较少使用的)Array.prototype.forEach方法方法之外,不使用数组[].

它基本上是重新绑定Array.forEach用于不是数组的东西,在这种情况下是一个NodeList.如果NodeLists提供了一个forEach方法,那么它将相当于,你可以将它读为:

document.querySelectorAll('input[type="checkBox"]').forEach(function(el) {
   el.checked = true;
});​

所以,深入一点.调用将执行具有不同上下文的函数. forEach遍历上下文并调用它作为参数传递的函数.所以一个someFunc.call(thisArg,otherArg)将被执行,就好像它在thisArg的上下文中一样,像thisArg.someFunc(otherArg).这是最简单的例子:

function callMe(something) {
    return something + this;
}

callMe('Hello'); // Hellonull or Hello[object Window] or something
callMe.call({},'World'); // World[object Object]

apply()以相同的方式工作,但是您传递一个参数数组作为第二个参数.

原文链接:https://www.f2er.com/js/152074.html

猜你在找的JavaScript相关文章