mixin
所谓的mixin就是将一个对象的属性复制给另一个对象
var mixin = function(a,b){
for(let key in b){
a[key] = b[key]
}
}
也就是Object.assign
柯里化(curry)
概念:对于一个拥有多个未知数(变量)的函数,如果我把其中一个未知数(变量)固定下来,就成了一个新的函数,这个函数就是偏函数,而得到这个偏函数的过程就是柯里化。
举例:
1.数学例子:对于f(x,y)=x+2y,我们将其中一个未知数(以x为例)固定下来,让它等于1,那么就形成了一个新的函数:f(1,y)=1+2y=g(y)这个新的函数g(y)就是上面说的偏函数
2.代码例子:
var f = function(x,y){
return x + 2*y
}
var g = function(y){
return f(1,y)
}
f(1,2)//5
g(2) //5
一个比较复杂的例子
var cache = []
var sum = 0
var add = function(n){
if(n===undefined){
cache.forEach(list=>{
sum+=list
})
return sum
}else{
cache.push(n)
return add
}
}
add(1) //add
add(1)(2)(3)(4)() //10
上面的代码运行后如果你传入了参数就会添加到cache数组里,然后返回add这个函数,如果你没有传入参数就会直接遍历这个数组然后将数组里面的每一项都相加,最后返回这个数组中所有项的总的值
高阶函数
一个函数接受一个或多个函数作为参数,或者说返回一个函数这个函数就是高阶函数