函数柯里化(Currying) 函数反柯里化

函数柯里化(Currying) 函数反柯里化
1)柯里化是一种关于函数的高阶段技术。他不仅被用于JavaScript,还被用于其他编程语言。
2)柯里化是一种函数转换,他是将一个函数从可调用的f(a,b,c)转换为可调用的f(a)(b)©
柯里化不会调用函数。他只是对函数进行转换

判断变量的类型 常用的判断类型的方法有四种:
1.typeof 不能判断对象类型 typeof [] typeof {}
2.constructor 可以找到这个变量是通过谁构造出来的
3.instanceof 判断谁是谁的实例 proto
4.Object.prototype.toString.call() 缺陷就是不能细分是谁的实例

function isType(type, value) {
    return Object.prototype.toString.call(value) === `[object ${type}]`;
}
//实现通用的函数柯里化方法
const currying = (fn, arr = []) => {
    let len = fn.length; // 这里获取的是函数的参数的个数
    return function(...args) { // 高阶函数
        let arr = [...arr, ...args];
        if (arr.length < len) {
            return currying(fn, arr); // 递归不停的产生函数
        } else {
            return fn(...arr);
        }
    }
}
let isArray = currying(isType)('Array') // bind
let isString = currying(isType)('String')
console.log(isArray([]));    //true
console.log(isArray('string')); // true

你可能感兴趣的:(javascript,前端,开发语言)