装饰器应用:防抖/节流

防抖装饰器
function debounce(fn, ms) {
    let timer
    return function (...args) {
        clearTimeout(timer)
        timer = setTimeout(fn.bind(this, ...args), ms)
    }
}
节流装饰器
function throttle(fn, ms) {
    let timer
    return function(...args) {
        if (timer) return
        timer = setTimeout(()=>{timer = null}, ms)
        fn.call(this, ...args)
    }
}

关键知识点

一个好的装饰器,不但应该实现功能,还应考虑到通用性。主要有以下2点:
(1) 支持多参数
(2)支持普通函数/对象方法(涉及对this的处理)

具体教程可参考https://zh.javascript.info/call-apply-decorators#

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容