美文网首页
怎么理解[].forEach.call()?

怎么理解[].forEach.call()?

作者: 殖民_FE | 来源:发表于2017-06-06 08:54 被阅读0次

今天,在网上看到javascript的[].forEach.call()写法,刚看到的时候有点蒙,不是太明白是什么意思!后来到网上查了一下,其实这东西是个简写的写法。如下:

function forEach(elems, callback) {
  if([].forEach) {
    [].forEach.call(elems, callback);
  } else {
    for(var i = 0; i < elems.length; i++) {
      callback(elems[i], i);
    }
  }
}


[] 就是个数组,而且是用不到的空数组,用来就是为了访问它的数组相关方法。那完整的写法是什么呢?
其实是这样的:

Array.prototype.forEach.call(...);

很显然,简写更方便。
js中的forEach 方法,它可以接受一个函数参数,如下:

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

上面的这句代码中,我们可以访问 this 对象,也就是 [1,2,3] ,可以看出,这个 this 是个数组。

最后, .call 是一个prototype,JavaScript函数内置的。 .call 使用它的第一个参数替换掉上面说的这个 this ,也就是你要传人的数组,其它的参数就跟 forEach 方法的参数一样了。

[1, 2, 3].forEach.call(["a", "b", "c"], function (item, i, arr) {
    console.log(i + ": " + item);
});
// 0: "a"
// 1: "b"
// 2: "c"

因此, [].forEach.call() 是一种快速的方法访问 forEach ,并将空数组的 this 换成想要遍历的list。

相关文章

  • 怎么理解[].forEach.call()?

    今天,在网上看到javascript的[].forEach.call()写法,刚看到的时候有点蒙,不是太明白是什么...

  • 理解JavaScript里的 [].forEach.call()

    参考:https://developer.mozilla.org/en-US/docs/Web/JavaScrip...

  • 怎么理解?

    孩子在幼儿园,一周中有几天脸上有划痕,最近的一根在一侧的脸上,痕迹还蛮深,足有十厘米长,看得我很是心疼,于是问了孩...

  • 怎么理解?

    打败100%的人,这意味着我的字数第一吗?

  • 想要提高学习效率,那么你就先提高阅读的能力

    阅读理解能力是其他一切能力的基础。它决定了你怎么理解知识、理解信息、理解世界,同时,怎么理解也关乎怎么记忆、表达。...

  • 怎么理解promise

    Promise是一种解决异步编程的方案; Promise的两个特点:1、Promise对象的状态不受外界影响 (有...

  • 怎么理解 DNS ?

    域名系统: (英文: Name System,DNS)是因特网的一项核心服务,它作为可以将域名和IP地址相互映射的...

  • 怎么理解自信

    自信两个字单单从字面上理解就是自己相信自己。 那怎么做才是相信自己的表现那?首先就是对自己能力的一种认...

  • 怎么理解strtotime() ?

    相当于 定制的 time()。

  • 怎么理解HTTPS

    http://showme.codes/2017-02-20/understand-https/

网友评论

      本文标题:怎么理解[].forEach.call()?

      本文链接:https://www.haomeiwen.com/subject/focgfxtx.html