js常用工具类函数方法

1 节流函数

function throttle(fn,delay) {

  var lastTime = 0;

  return function() {

    var nowTime = Date.now()
    if(nowTime-lastTime>delay) {

      fn.call(this)

      lastTime=nowTime  

    }

  }

}

2 防抖函数

function debounce(fn,delay) {

  var timer = null

  return function() {

    clearTimeout(timer)

    timer = setTimeout(function(){

      fn.apply(this)

    },delaly)

  }

}

3 深度克隆

function deepClone(target,map = new Map()) {

  if(target&& typeof target ==='object') {

    var deepTarget = map.get(target)
    if(deepTarget ) return deepTarget
    deepTarget = Array.isArray(target)?[]:{}
    map.set(target,deepTarget)
    for(var key in target) {

      if(target.hasOwnProperty(key)) {

        deepTarget [key] = deepClone(target[key],map)
      }

    }
    return deepTarget
  } else {

     return target
  }

}

4 浅拷贝

function clone(target) {

  if(target instanceof Array) {

    return [...target]

  } else if(target && typeof target==='object') {

    return {...target}

  } else {

    return target 

  }

}

posted @ 2021-02-07 16:58  jk007  阅读(167)  评论(0)    收藏  举报