简单的Javascript幻灯片放映

时间:2015-08-03 00:09:16

标签: javascript arrays

我在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遍历所有已知元素?

1 个答案:

答案 0 :(得分:2)

array( 'key' => 'industry_areas_list', 'value' => $the_vacancies_industry_areas_list, 'compare' => 'LIKE', ), CGPoint _originalCenter; -(void)handlePan:(UIPanGestureRecognizer *)recognizer { if (recognizer.state == UIGestureRecognizerStateBegan) { // if the gesture has just started, record the current centre location _originalCenter = self.center; } 的简写。每个javascript函数都是一个拥有自己的方法的对象。 call()就是其中之一。

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