call函数实现

call 函数的实现步骤:

  1. 判断调用对象是否为函数,即使我们是定义在函数的原型上的,但是可能出现使用 call 等方式调用的情况。

  2. 判断传入上下文对象是否存在,如果不存在,则设置为 window 。

  3. 处理传入的参数,截取第一个参数后的所有参数。

  4. 将函数作为上下文对象的一个属性。

  5. 使用上下文对象来调用这个方法,并保存返回结果。

  6. 删除刚才新增的属性。

  7. 返回结果。

javascript 复制代码
// call函数实现
Function.prototype.myCall = function(context) {
  // 判断调用对象
  if (typeof this !== "function") {
    console.error("type error");
  }
  // 获取参数
  let args = [...arguments].slice(1),
      result = null;
  // 判断 context 是否传入,如果未传入则设置为 window
  context = context || window;
  // 将调用函数设为对象的方法
  context.fn = this;
  // 调用函数
  result = context.fn(...args);
  // 将属性删除
  delete context.fn;
  return result;
};
相关推荐
携欢几秒前
PortSwigger靶场之Reflected XSS into attribute with angle brackets HTML-encoded通关秘籍
前端·xss
David爱编程2 分钟前
深入 Java synchronized 底层:字节码解析与 MonitorEnter 原理全揭秘
java·后端
小爱同学_4 分钟前
React知识:useState和useRef的使用
前端·react.js
索迪迈科技6 分钟前
Protobuf 新版“调试表示为什么有链接?为什么会打码?我该怎么改代码?
java·log4j·apache
再学一点就睡12 分钟前
双 Token 认证机制:从原理到实践的完整实现
前端·javascript·后端
wallflower202014 分钟前
滑动窗口算法在前端开发中的探索与应用
前端·算法
蚂蚁绊大象14 分钟前
flutter第二话题-布局约束
前端
a_blue_ice15 分钟前
JAVA 面试 MySQL
java·mysql·面试
龙在天16 分钟前
我是前端,scss颜色函数你用过吗?
前端
Mapmost23 分钟前
单体化解锁3DGS场景深层交互价值,让3DGS模型真正被用起来!
前端