乐趣区

高阶函数

高阶函数
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>
退出移动版