- 柯里化 主要体现在函数里面返回函数
- 柯里化 参数的复用
- 柯里化 延迟执行
function url(protocol,hostname,pathname){
return `${protocol}${hostname}${pathname}`
}
var url1 = url('https://','www.baidu.com','/index')
console.log(typeof url1)
function url_crring(protocol){
return function(hostname,pathname){
return `${protocol}${hostname}${pathname}`
}
}
var url1 = url_crring('https://')
const url2 = url1('ymscq.cn','/demo')
const url3 = url1('taobao.com','/index')
const url4 = url1('bilibili','/test')
console.log(url2,url3,url4)
const whichEvent = (function(){
if(window.addEventListener){
return function(ele,type,listener,useCapture){
ele.addEventListener(type,function(e){
listener.call(ele,e)
},useCapture)
}
}else if(window.attachEvent){
return function(ele,type,listener){
ele.attachEvent('on'+type,function(e){
listener.call(ele,e)
})
}
}
})()
function add(){
let arg = Array.prototype.slice.call(arguments);
let inner = function(){
arg.push(...arguments)
return inner;
}
inner.toString = function(){
return arg.reduce(function(pre,cur){
return pre + cur
});
}
return inner;
}
const result1 = add(1)(2)(3)(4)
const List1 = [
{mid:'haha'},
{mid:'hehe'},
{mid:'xixi'},
{mid:'eeee'}
]
const List2 = [
{add:'a'},
{add:'o'},
{add:'e'}
]
const curring = name => element => element[name]
const name_mid = curring('mid')
const name_add = curring('add')
console.log(List1.map(name_mid))
console.log(List2.map(name_add))