York's Blog

mixin、柯里化和高阶函数

mixin(混入)

mixin(混入)模式就是把b的属性一个一个拷贝到a身上

1
2
3
4
5
var mixin=function(a,b){
for(let key in b){
a[key]=b[key]
}
}

Object.assign(a,b)也是mixin

curry 柯里化

又称部分求值(Partial Evaluation),是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数的技术。

1
2
3
4
5
6
7
8
9
10
11
12
var f=function(x,y){return x+2*y}

var g=function(y){return f(1,y)}
g(2) //===5


var g=function(x){
return function(y){
return f(x,y)
}
}
g(1)(2) //===5

1
2
3
4
5
6
7
8
9
10
11
12
var cache=[]

var add=function(n){
if(n===undefined){
return cache.reduce((p,n)=>p+n,0)
}else{
cache.push(n)
return add
}
}

add(1)(2)(3)(4)() //===10

underscore库可以把普通函数变成偏函数(柯里化)

高阶函数

高阶函数是至少满足下列一个条件的函数:

  1. 接受一个或多个函数作为输入
  2. 输出一个函数
    高阶函数
    一个组件接受一个组件,在这个组件基础上进行封装,返回这个组件,就是高阶组件
Proudly published with Hexo