定义:函数的参数或者返回值仍然是函数
应用一:after函数。
after函数接受2个参数,第一个参数是回调函数,第二个参数是当执行几次后回调该函数。
let after = function (myfunc,times) {
var time = times;
return function () {
time--;
if(time<=0){
myfunc();
}
}
}
var my = function () {
console.log("函数执行了");
}
var aaa = after(my,3);
aaa();
aaa();
aaa();
aaa();
上面回调函数的功能是打印“函数被执行了”,把它传入after函数,并指定3次以后开始执行回调函数。现在调用了4次aaa,只有第三次和第四次才会真正打印“函数被执行了”。打印结果如下:
应用二:before函数
当调用一个函数(myFunctuin)的before函数,需要传参,该参数是一个回调函数,这个回调函数应当在myFunction执行前被执行,实现方法如下:
Function.prototype.before = function (myFun) {
let that = this;
return function () {
myFun();
that();
}
}
let myFun = function () {
console.log("我是myFun函数");
}
let insert = function () {
console.log("我应该在myFun之前执行");
}
let aaa = myFun.before(insert);
aaa();
执行结果如下: