[JS] 前端常用 utils 方法手写

[JS] 前端常用 utils 方法手写

·

1 min read

写项目时,通常都会建一个utils文件夹用于存放工具类,这篇博客就来总结一下一些常用的utils的手写方法

深拷贝 deepClone

const deepClone = (obj: any) => {
    if(typeof obj === "object") {
        // 创建一个新对象,避免直接引用原来的对象
        let newObj: any = Array.isArray(value) ? [] : {}
        // for in 循环既可以遍历对象,也可以遍历数组
        for(const key in newObj) {
            newObj[key] = deepClone(newObj[key])
        }
        return newObj
    }
    return obj
}

防抖 debounce

const debounce = (func: function, time: number) => {
    // 闭包,保存一个变量,用于每次触发防抖函数时清理之前的定时器
    const timer: any = null
    return function (...args) {
        clearTimeout(timer)
        timer = setTimeout(() => func(args), number)
    }
}

节流 throttle

const throttle = (func: function, time: number) => {
    // 保存上一次的调用时间
    let last: Date = null
    return function(...args) {
        const now = new Date()
        // 如果没有调用过,或者调用的时间间隔大于设置的最小时间间隔,才可以调用 
        if(last === null || now - last > time) {
            func(args)
            last = now
        } 
    }
}