传参数调用函数的问题
这样的需求 :调用函数时传入几个参数 就执行对应参数个数的函数 以下 以0个参数 1个参数 两个参数为例 第一次看见下面代码时候 特么的脑子里一万个*** 完全看不懂 如何浅入浅出~~
<script>
function User(){
}
let user=new User();
function addMethods(obj,name,fn){ //作者是jq之父
let old=obj[name];
obj[name]=function(){
if(fn.length===arguments.length){
fn.apply(this,arguments)
}
else if(typeof old==="function"){
old.apply(this,arguments)
}
}
}
addMethods(user,"find",()=>{
console.log("no params")
})
addMethods(user,"find",(a)=>{
console.log("一个参数",a)
})
addMethods(user,"find",(a,b)=>{
console.log("两个参数",a,b)
})
user.find() // no params
user.find(1) //一个参数 1
user.find(1,2) //两个参数 1 2
</script>