JavaScript 基础
Document
运算符
深入数据和类型
函数进阶
原型、继承
类
浏览器存储
Web API
事件
错误处理
异步编程
网络请求
模块
练习
实例
工具与规范
软件架构模式
设计模式
装饰器模式,统计函数耗时
装饰器模式允许我们在不影响原函数的前提下扩展一个函数的功能,装饰后的函数调用接口与返回数据都应保持一致。
剩余与展开语法使得我们可以接收任意参数,并展开至原函数,这意味着装饰器可以匹配任意参数的函数。
以下实现了一个统计函数耗时的装饰器。
$$jsdemo$$
$$edit$$
function loop(a, b) {
// 在 a,b 区间内循环并返回它们的减值
for (let i = a; i <= b; i++) {
console.log(i)
}
return b - a
}
function UsageTime(func) {
// 计算函数的耗时
// 又不影响原功能
return function wrapper(...args) {
// 使用剩余语法
// 接受任意多个参数值
// 使得可以适合任意函数
console.log("进入时确认:")
// 开始的时间戳
const begin = Date.now()
// 展开接收到的参数至原函数
const result = func(...args)
// 结束的时间戳
const end = Date.now()
console.log(`执行耗时${end - begin}毫秒`)
console.log("结束时确认:")
return result
}
}
let newLoop = UsageTime(loop)
let result = newLoop(100, 1000)
console.log(result)