猿问

vue源码阅读 cached方法疑惑!

在读vue源码时,遇到cached方法,如下:


// 在src/shared/until.js中

export function cached (fn: Function): Function {

  const cache = Object.create(null)

  return function cachedFn (str: string): any {

    const hit = cache[str]

    return hit || (cache[str] = fn(str))

  }

}

上面这个方法在很多其他方法中有运用,如


//驼峰化以连字符分隔的字符

const camelizeRE = /-(\w)/g

export const camelize = cached((str: string): string => {

  return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : '')

})


//大写字符串

var capitalize = cached(function (str) {

  return str.charAt(0).toUpperCase() + str.slice(1)

});

网上查询了说是cached方式加快数据的读取速度,加做缓存策略;


但是并不能理解,有大神可以讲解下,该方法的原理吗?


慕无忌1623718
浏览 763回答 2
2回答

婷婷同学_

已想明白!它的实现原理:创建一个对象,将我们所写的东西保存到这个对象中,如果说我们后面再次用到了这个东西,那么 JavaScript 就不需要再计算一遍了,直接将这个对象中我们需要的东西提取出来
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答