手写bind,apply,call方法

//1.定义myBind方法
Function.prototye.mybind=function(thisArg,...args){
  //2.返回绑定this的新函数
  return(...reArgs)=>{
  	return this.call(thisArg,...args,...reArgs)
  }
}

//1.定义myapply方法
Function.prototype.myapply=function(thisArg,args){
	//2.设置this并调用原函数
  const key=Symbol('key')
  thisArg[key]=this
  delete thisArg[key]
  //3.接收剩余参数并返回结果
  const res=thisArgs[key](...args)
  return this
}

//跟apply方法基本相同
//1.定义mycall
Function.prototype.mycall=function(thisArgs,...args){
//2.设置this并调用原函数
  const key=Symbol('key')
  thisArg[key]=this
  delete thisArg[key]
  //3.接收剩余参数并返回结果
  const res=thisArg[key](...args)
  return res
}

全部评论

相关推荐

04-10 11:56
如皋中学 Java
高斯林的信徒:双c9能简历挂的?
点赞 评论 收藏
分享
05-07 17:58
门头沟学院 Java
wuwuwuoow:1.简历字体有些怪怪的,用啥写的? 2.Redis 一主二从为什么能解决双写一致性? 3.乐观锁指的是 SQL 层面的库存判断?比如 stock > 0。个人认为这种不算乐观锁,更像是乐观锁的思想,写 SQL 避免不了悲观锁的 4.奖项证书如果不是 ACM,说实话没什么必要写 5.逻辑过期时间为什么能解决缓存击穿问题?逻辑过期指的是什么 其实也没什么多大要改的。海投吧
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务