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)
        }
      }
     
  • 相关阅读:
    闽江学院2015-2016学年下学期《软件测试》课程-第五次博客作业
    在Swift中应用Grand Central Dispatch(下)
    在Swift中应用Grand Central Dispatch(上)转载自的goldenfiredo001的博客
    Asp.net mvc 框架揭秘之Asp.net +Mvc简介
    JavaScript数组
    网页校验
    删除弹出提示框_MVC
    业务体会
    判断数组值是否有重复
    sql
  • 原文地址:https://www.cnblogs.com/gudun/p/14709231.html
Copyright © 2011-2022 走看看