个人js相关方法实现
js判断类型的方法实现 // 设置为全局方法,返回方法的小写类型
(function () { window.getTypeLowerCase = function (param) {
// const toString = Object.create({}).toString; const toString = {}.toString; return typeof param === 'object' ? toString.call(param).slice(8, -1).toLocaleLowerCase() : typeof param; }; })()
防抖函数简单实现
function debounce(fn, delay) { let timeId; return function() { if (timeId) clearTimeout(timeId); timeId = setTimeout(fn, delay); } }
节流函数简单实现:
function throttle(fn, delay) { let startTime = Date.now(); return function () { // 连续点击按钮则在Math.floor(delay / 1000)秒后再次触发 if (Date.now() - startTime <= delay) { console.log('节流函数没有调用', Date.now() - startTime); return false; } // 重置startTime时间,为下次调用做准备 startTime = Date.now(); fn(); } }
用setTimeout实现setInterval
1 function myInterval() { 2 function interval() { 3 timeId = setTimeout(interval, 1000); 4 } 5 // 阻止重复触发myInterval函数 6 if (timeId) return false; 7 timeId = setTimeout(interval, 1000); 8 }