钩子hook的使用
什么是钩子:按我的理解啊,钩子就是由表驱动,来处理多种if选择情况的一种技术方式;我们通过一张表去匹配而不是一次次的if判断;说的更明白一点就是依据传入的参数执行以表中值为判断依据的代码段。和策略模式很相似,还有不明白的,我们看一下下面的代码案例就明白了
//钩子,全局变量,hooks定义方式可以根据具体需求定义,map,json,还是attay,key-value
hooks = [
"hook_test_event","hook_getUserInfo_event"
]
//处理钩子的对象
const hook = ()=>{
return {
init: () => {
this.callbacks("init")
},
callbacks: (init) => {
let s = "hook_" + init + "_event";
f = [];
for (let h in hooks) {
if(h.indexOf(s) != 0) continue;
f.push(h);
}
this.hooksExecute(f);
},
hooksExecute: (hooks) => {
if (0 === hooks.length) {
return;
}
let h = hooks.shift();
//执行hook函数,
h()
}
}
}
这里两个概念,一个是全局变量钩子的定义,一个就是钩子对象或者说是钩子函数的定义方式
网友评论