我在Codepen上发现了这个脚本,这确实引起了我的极大兴趣,但它也让我挠头。整个代码库不是很大,实际上整个幻灯片脚本只有大约18行。在下面

(function(){
  var counter = 0, $items = document.querySelectorAll('.diy-slideshow section'),numItems = $items.length;
  var showCurrent = function(){
    var itemToShow = Math.abs(counter%numItems);
    [].forEach.call( $items, function(el){
      el.classList.remove('show');
    });
    $items[itemToShow].classList.add('show');
  };
  setInterval(function() {
     counter++;
     showCurrent();
  }, 5000);
})();


所以我很困惑的部分是showCurrent函数。更具体地说,这是

[].forEach.call($items, function(el){...};


现在我知道[]将是一个数组,但是我不知道它在哪里获取该数组的值,该函数如何知道数组中有X个要循环的项目?是什么使[].forEach遍历所有已知元素?

最佳答案

[].foreach.callArray.prototype.foreach.call的简写。每个javascript函数都是一个具有自己方法的对象。 call()是其中之一。

call()的第一个参数是thisArg,表示在函数执行期间将表现为this的对象。在您的示例中,$items(它是一个DOMElement数组)在this调用中将是foreach

关于javascript - 简单的Javascript幻灯片说明,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31777843/

10-11 22:39
查看更多