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)
        }
      }
     
  • 相关阅读:
    纹理作用于栅格建模
    Blender模拟全局照明的简单方法
    材质组合卡通眼球
    Blender 曲线操作
    材质纹理的初级示例
    Quick Noodle Physics in Blender Tutorial
    Blender简单动画:一个小球从一座山上滚下.
    PostgreSQL的目录结构及修改数据目录
    PostgreSQL的配置文件
    CentOS7安装PostgreSQL10,pgadmin4
  • 原文地址:https://www.cnblogs.com/gudun/p/14709231.html
Copyright © 2011-2022 走看看