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