我在科德芬上找到了这个脚本,它确实让我的兴趣达到了顶峰,但它也让我抓狂。整个代码库没有那么大,实际上整个幻灯片脚本只有大约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循环遍历所有已知的元素?
发布于 2015-08-03 00:14:52
[].foreach.call是Array.prototype.foreach.call的缩写。每个javascript函数都是一个有自己方法的对象。call()就是其中之一。
call()的第一个参数是thisArg,它表示函数期间行为为this的对象。在您的示例中,$items (是DOMElement数组)将是foreach调用中的this。
https://stackoverflow.com/questions/31777843
复制相似问题