柯理化
总结来说: 通过函数调用返回函数的形式,实现多次接收参数最后统一处理的编码形式 就是柯理化
作用: 参数复用
封装一个柯理化函数
// 例如
function sum(a,b,c,d){
return a + b + c + d
}
sum(1,2,3,4) // 10
// 需求: sum(1)(2)(3)(4) 或 sum(1,2)(3,4) ... 也能得到10
function curry(fn){
// 用len 接收函数参数的长度
const len = fn.length
return function temp(...args){
// 返回一个函数并判断实参的长度
if(args.length >= len){
return fn(...args)
}else{
return function(...args2){
return temp(...args,...args2)
}
}
}
}
const sum2 = curry(sum)
console.log(sum2(1)(2)(3)(4)) // 10
console.log(sum2(1)(2,3,4)) // 10
...
准确判断数据类型
Object.prototype.toString.call(数据)
相当于"借用" Object 原型上的 toString 方法改变其内部 this 的指向来判断数据类型 调用 apply 方法改变 this 指向也可以实现
伪数组转化为真数组
ES6 --- Array.from()
ES5 --- Array.prototype.slice.call(伪数组)
该方法也相当于"借用"数组原型上的方法来达成需求,伪数组是没有数组方法的