我在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.call
是Array.prototype.foreach.call
的简写。每个javascript函数都是一个具有自己方法的对象。 call()
是其中之一。call()
的第一个参数是thisArg
,表示在函数执行期间将表现为this
的对象。在您的示例中,$items
(它是一个DOMElement
数组)在this
调用中将是foreach
。
关于javascript - 简单的Javascript幻灯片说明,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31777843/