浅克隆,深克隆,防抖,节流

 function clone(data) {
    if (Object.prototype.toString.call(data) === '[object Array]') {
      return [...data]
    } else if (Object.prototype.toString.call(data) === '[object Object]') {
      return { ...data }
    }
    return data
  }

  function deelClone(data) {
    let ws = new WeakSet()
    function clone(data) {
      if (Object.prototype.toString.call(data) === '[object Array]') {
        if (ws.has(data)) return data
        ws.add(data)
        return data.map(item => clone(item))
      } else if (Object.prototype.toString.call(data) === '[object Object]') {
        if (ws.has(data)) return data
        ws.add(data)
        let obj = {}
        for (var i of Object.keys(data)) {
          obj[i] = clone(data[i])
        }
        return obj
      }
      return data
    }
    return clone(data)
  }

  function myInstanceof(obj, proto) {
    let parentProto = Object.getPrototypeOf(obj)
    while (parentProto) {
      if (parentProto === proto.prototype) return true
      parentProto = Object.getPrototypeOf(parentProto)
    }
    return false;
  }

  function debounce(fn, wait, longTime) {
    let time = null, timer = null
    return function () {
      let nowTime = Date.now(), that = this, args = arguments;
      if (!time) time = nowTime
      let runTime = time + longTime - nowTime
      runTime = Math.min(runTime, wait)
      clearTimeout(timer)
      timer = setTimeout(() => {
        timer = time = null
        fn.apply(that, arguments)
      }, runTime)
    }
  }

  function throttle(fn, wait) {
    let timer = null
    return function () {
      if (timer) return
      let that = this, args = arguments;
      timer = setTimeout(() => {
        timer = null
        fn.apply(that, arguments)
      }, runTime)
    }
  }
 
posted @ 2021-04-27 15:37  孤魂1715  阅读(47)  评论(0编辑  收藏  举报