鉤子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()
}
}
}
這里兩個概念,一個是全局變量鉤子的定義,一個就是鉤子對象或者說是鉤子函數的定義方式