整理下初学时做过的js基础编程题目和大家分享以下,如果大家觉得有用,别忘了点一下赞哦
柯里化函数
写一个sum方法,当使用下面的语法调用时,他将正常工作
console.log(sum(2,3))
console.log(sum(2)(3))
柯里化的编程思想实现
function sum(x,y){
if(typeof y !== "undefined"){
return x+y
}else{
return (y)=>{
return x+y
}
}
}
上面代码可以用箭头函数简写
const sum = (x, y) => typeof y !== "undefined" ? x + y : y => x + y
这里扩展下柯里化函数的应用
- 封装bind
用ES6封装
Function.prototype.myBind = function (context, ...params) {
return (...res) => this.apply(context, [...params,...res]);
};
- 用 arguments 封装
Function.prototype.myBind =function(context){
let self = this;
let param = [].slice.call(arguments,1,arguments.length)
return function(){
let res = [].slice.call(arguments)
res = param.concat(res)
return self.apply(context,res)
}
}
我们可以检验一下
function test(a,b,c){
console.log(a+b+c)
console.log(this)
}
test.myBind({name:"xiaoliu"},1)(2,3)// 6 "xiaoliu"