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

JS手写代码篇---手写call函数

10、手写call函数

  1. call 方法的作用:改变函数的 this 指向并立即执行该函数
  2. 手动实现 call 的原理:通过将函数作为对象的方法调用来改变 this 指向

代码如下:

       Function.prototype.myCall = function (obj , ...args){// 判断this是否为函数,只有函数才可以进行后面的调用if(typeof this !== 'function'){throw new TypeError("this not a function")}// 当obj为null或者undefied的时候obj是globalThis,其他都是对象obj = (obj === null || obj === undefied ) ? globalThis : Object(obj);// 大致的结构就是改变this指向加执行函数// 我们最开始是直接添加一个fn的属性,但是我们是通用的,很有可能属性会相同// 我们使用 es6的symbol:Symbol 来避免属性名冲突const key = Symbol('temp');obj[key] = this;// 当存在值的时候,要接收const res = obj[key](...args);delete obj[key];return res;}

重要知识点:

1.Symbol 的作用

  • 创建唯一的属性名,避免命名冲突
  • 适合用于临时属性的键名

2.参数处理

  • 使用剩余参数 ...args 收集所有传入参数
  • 展开运算符 ... 用于传递参数列表

3.边界情况处理

  • 检查调用者是否为函数
  • 处理 null/undefined 上下文的情况
  • 确保不污染传入的对象
http://www.xdnf.cn/news/790579.html

相关文章:

  • ADC接口电路设计详解
  • 动态规划-647.回文子串-力扣(LeetCode)
  • Double/Debiased Machine Learning
  • 同余的概念和基本性质
  • cursor对话
  • DPDK与网络协议栈
  • 从 Docker 到 Containerd:Kubernetes 容器运行时迁移实战指南
  • AI预测3D新模型百十个定位预测+胆码预测+去和尾2025年6月3日第97弹
  • html转md的Python程序
  • 图解深度学习 - 激活函数和损失函数
  • 数据安全中心是什么?如何做好数据安全管理?
  • [内核开发手册] ARM汇编指令速查表
  • 【Linux】linux基础指令
  • 用python制作一个消消乐游戏(限时关卡挑战版)
  • 【Linux】进程虚拟地址空间详解
  • 太阳敏感器:卫星姿态控制的“指南针
  • istringstream
  • qt 事件顺序
  • Windows安装PostgreSQL(16.9)
  • 半导体行业-研发设计管理数字化转型案例分享
  • 【Typst】6.布局函数
  • c# 显示正在运行的线程数
  • lsinitramfs命令
  • 新德通科技:以创新驱动光通信一体化发展,赋能全球智能互联
  • Vue3.5 企业级管理系统实战(二十二):动态菜单
  • 代码随想录60期day56
  • 海盗64位GameServer的使用体验
  • 【自动思考记忆系统】demo (Java版)
  • 记一次sql按经纬度计算距离
  • 市面上有真正的静态住宅ip吗?