从vue源码中学到的一些总结之函数的缓存

2020-08-05  本文已影响0人  Splendid飞羽

在设计模式专题中,我们了解到了代理模式,即在调用者与具体实现之间架设一层中间层,通过中间层去做一些操作
下面给大家介绍的就是vue中使用的缓存一个函数的常用做法

/**
 * Create a cached version of a pure function.
 */
function cached(fn) {
    var cache = Object.create(null);
    return (function cachedFn(str) {
        var hit = cache[str];
        return hit || (cache[str] = fn(str))
    })
}


/**
 * Capitalize a string.
 */
var capitalize = cached(function (str) {
    return str.charAt(0).toUpperCase() + str.slice(1)
});

let str = capitalize('sliderUp'); // SliderUp
console.log(str);

分析:首次运行代码的时候,capitalize返回的是一个闭包的function,当后面的真正传参并调用时,对对象进行缓存,如果下次初始化同样的字符串,那么直接从对象的key中获取结果即可。

上一篇下一篇

猜你喜欢

热点阅读