JS高级函数的用法


// 什么叫高阶函数 : 1.如果一个函数的参数是一个函数 (回调函数也是一个高阶函数)
// 2.如果一个函数返回一个函数 这个函数就叫高阶函数
// 闭包
// 对某些函数进行扩展 面向切片编程 

function say(who) { // 装饰
    console.log('say',who)
}
// 在说话之前 去干一些事 在说话之前先刷牙
Function.prototype.before = function (callback) { // 统一扩展了公共方法
    // 箭头函数中没有 this 没有arguments

    // args 就是当前参数的一个数组  ['我']
    return  (...args) => { // newSay  箭头函数中没有this指向,会像上级作用域查找。也没有arguments,得自己传参数, 
        callback();
        // 展开运算符 可以将数组展开依次传入
        this(...args);// this指向怎么看 就是谁调用这个方法 this就是谁
    }
}
let newSay = say.before(function () {
    console.log('刷牙');
})
newSay('我');
// 原型链 prototype __proto__
原文地址:https://www.cnblogs.com/TTblog5/p/13054370.html