JS中的钩子:
钩子是将需要执行的函数或者其他一系列动作注册到一个统一的入口,程序通过调用这个钩子来执行这些已经注册的函数,还有就是提供一个可以响应默认流程的机制的时机,像react中生命周期的componentWillMount,componentDidMount等,这些都是钩子函数。有的时候,在相同的页,或者不同的页中我们会写很多重复的代码,比如一些初始化的条件,那最近写过的栗子来说:
在多个js文件中都会用到这样一个函数,而这个函数将作为参数传到另一个b.js文件,在此函数里面重复的代码很多。
getDataList(page = 1,selectPageValue) { //todo}
在b.js中
renderPagination = function(page, per_page, total, onclickFuncName, containerSelector,isSelect){
var originFunction = onclickFuncName;
window.onclickFuncName = function(){
//1.
let p = $('.selectPage');
let selectPageValue = '';
for(let i in p){
if(p.eq(i).val()!=''){
selectPageValue = p.eq(i).val();
break;
}
}//9
window[originFunction](page,selectPageValue);
}
onclickFuncName便是getDataList,这段代码便是为了在其他那几个js文件中省去从1到9行代码的重复,相当于对原函数做了改造,或者理解下面这个例子:
var oriAlert = window.alert;
window.alert = function(txt){
//改造函数
oriAlert(txt);
}
oriAlert就是一个钩子函数。
在vue中的过滤效果中,附上一张截图:
![](https://img-blog.csdn.net/20170306164143851?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvTHVmZnlfeWluZw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
里面的这些函数也都是钩子函数。