zoukankan      html  css  js  c++  java
  • 浅克隆,深克隆,防抖,节流

     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)
        }
      }
     
  • 相关阅读:
    [loj6271]生成树求和
    [cf1209E]Rotate Columns
    [cf1491H]Yuezheng Ling and Dynamic Tree
    [atARC064F]Rotated Palindromes
    [cf1491G]Switch and Flip
    [cf1491F]Magnets
    [atARC063F]Snuke's Coloring 2
    [atARC062F]Painting Graphs with AtCoDeer
    [atARC061F]Card Game for Three
    [atARC112E]Rvom and Rsrev
  • 原文地址:https://www.cnblogs.com/gudun/p/14709231.html
Copyright © 2011-2022 走看看