「跟着渡一学前端」Lodash——手写memoize函数

学习资源#

完整代码#

function memoize(func, resolver) {
  const memoized = function (...args) {
    const key = resolver ? resolver.apply(this, args) : args[0];
    if (memoized.cache.has(key)) {
      return memoized.cache.get(key);
    }
    const result = func.apply(this, args);
    memoized.cache.set(key, result);
    return result;
  }

  memoized.cache = new WeakMap();

  return memoized;
}

知识细节#

  1. 该函数做了什么事情?

    • 可以做缓存(即在参数相同的时候,会取上一次返回结果,不会再调用方法);
    • 可以通过.cache.set设置缓存key对应的值。
  2. 逻辑拆解

    1. 基础结构:传入一个函数,返回一个函数

    2. 功能实现

      1. 实现可以通过.cache.set方法设置缓存功能

      2. 实现调用函数时,尽量从缓存结果中获取缓存

      3. 处理函数第二个参数功能。--用于规定缓存的键。

posted @   lao-jiawei  阅读(4)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示
主题色彩