当前位置: 首页 > news >正文

JS手写代码篇---bind手写

12、手写bind方法

bind 是 Function 对象的一个方法,它主要用于创建一个新的函数,并绑定该函数的 this 值以及预设的参数。bind 方法允许你在调用函数时,指定函数的 this 值,并可以预先填充部分参数。

与call、apply的共性:改变this指向

但是bind与她们不相同的就是返回一个函数,在函数当中执行this指向的函数,这里会面临一个问题:this是否还会指向原来的函数???

答案是不会,所以我们要事先接收this指向的函数.

代码:

    // 1、创建bind函数,传入obj和参数Function.prototype.myBind= function(obj , ...bindAgrs){// 2.判断thisif(typeof this !== 'function'){throw TypeError("this is not a function")}// 3.保存函数引用:后面会使用到的const self = this;// 4.返回的是function,function也是会传入参数的return function(...callArgs){// 5.执行这个函数(self),我们也是新建一个属性const key = Symbol('temp');// 注意!!!判断是否为空obj = obj ==null ? globalThis : Object(obj);// obj[key] = this;// 这里的 this 在返回的新函数中,指向调用新函数的对象(比如 window),而不是原始要绑定的函数。obj[key] = self;// 执行可能返回数据const res = obj[key](...bindAgrs  , ...callArgs);delete obj[key];return res;}}

注意:

在返回的函数里面也是要接收参数的

相关文章:

  • python摆放花盆 2023年信息素养大赛复赛/决赛真题 小学组/初中组 python编程挑战赛 真题详细解析
  • 如何利用Haption力反馈遥操作机器人解决远程操作难题
  • 25_06_05Ubuntu系统root密码破解
  • ros2--大数据包丢帧问题
  • 【DAY40】训练和测试的规范写法
  • 全国邮政编码,包括:省份 市 县区 长途区号 邮政编码
  • EFI(x64)简易开发环境
  • JavaScript 循环方法对比指南
  • 什么是软中断、硬中断
  • World of Warcraft [Vault of Archavon][Reins of the Grand Black War Mammoth]
  • 【git】把本地更改提交远程新分支feature_g
  • 【大模型RAG】六大 LangChain 支持向量库详细对比
  • python学习day39
  • Python应用函数调用(二)
  • invalid literal for int() with base 10: ‘27.0‘
  • Liunx进程替换
  • C获取unix操作系统的信息
  • 行业赋能篇-2-能源行业安全运维升级
  • Python数据可视化科技图表绘制系列教程(四)
  • 大中型水闸安全监测管理系统建设方案
  • wordpress搬站/抖音引流推广怎么做
  • 如何给网站添加统计代码/网络公司的推广
  • frontpage可以做网站吗/腾讯企点app下载安装
  • 做网站挂靠服务器/免费推广自己的网站
  • vue做门户网站/西安做网站哪家好
  • 网站开发定制企业/合肥关键词排名优化