个人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 }

 

 

 

 

 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

posted on 2024-11-29 12:31  shenhf  阅读(1)  评论(0编辑  收藏  举报

导航