2021-06-28 闭包应用
2021-06-28 本文已影响0人
0说
let test = function() {
let cache = {}
// 这里提到这边可以跟下面的函数 解开 耦合关系
let countTotal = function() {
let a = 1
for(let i = 0; i < arguments.length; i++) {
a *= arguments[i]
}
return a
}
return function() {
// arguments 没有join函数 利用Array的方法来做到join
let arg = Array.prototype.join.call(arguments, ',')
// 查看有没有缓存
if(cache[arg]) {
console.log('走缓存了')
return cache[arg]
}
return cache[arg] = countTotal.apply(null, arguments)
}
}()
console.log(test(1, 2, 3))
console.log(test(7, 8, 9))
console.log(test(1, 2, 3))
// 命令模式 解耦
// 事件对象
let TV = {
open() {
console.log('打开电视');
},
close() {
console.log('关闭电视');
}
}
// 执行事件
let DoSome = function(tv) {
let open = function() {
return tv.open()
}
let close = function() {
return tv.close()
}
return {
open,
close
}
}
// 绑定事件
let mount = function(action) {
document.getElementById('open').onclick = function() {
action.open()
}
document.getElementById('close').onclick = function() {
action.close()
}
}
mount( new DoSome( TV ) )