高阶函数
1,回调函数是高阶函数的一种。

高阶函数
1) 如果函数的参数是一个函数
2)如果一个函数返回了一个函数 (返回函数就是高阶函数)

    <script>        //AOP 面向切片编程 , 或者重新原生方法        function say (who){             //todo ....             console.log(who+'说话')        }        Function.prototype.before = function (beforeFunc){            // ... 剩余运算符 ,将所以的参数组合为数组,只能在最后的一个参数中用            return (...agrs)=>{  //箭头函数没有this,没有arguments 没有原型            console.log(agrs);                beforeFunc()                this(...agrs)// ... 展开运算符            }        }        let newFn = say.before(function(){            console.log('说话前')        })        newFn('我')    </script>   
    <script>        let oldPush = Array.prototype.push;        function push (...args){            console.log('数据更新了2');            oldPush.call(this,...args) //call的用法 1)改变this指向, 2)让函数自动执行        }        let arr = [1,2,3,4]        push.call(arr,5,6,7)   //在调用push方法时触发一句更新操作        console.log(arr);            </script>