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;
};
相关推荐
Wang15303 分钟前
Java排序
java
逸风尊者8 分钟前
XGBoost模型工程使用
java·后端·算法
一嘴一个橘子8 分钟前
MP 自定义业务方法 (二)
java
河阿里17 分钟前
HTML5标准完全教学手册
前端·html·html5
吴声子夜歌18 分钟前
Vue3——新语法
前端·javascript·vue.js
jiayong2321 分钟前
第 36 课:任务详情抽屉快捷改状态
开发语言·前端·javascript·vue.js·学习
低客的黑调25 分钟前
MyBatis-Plus-从 CRUD 到高级特性
java·servlet·tomcat
FFF_6345602326 分钟前
通用 vue 页面 js 下载任何文件的方法
开发语言·前端·javascript
光影少年38 分钟前
中级前端需要会的东西都有那些?
前端·学习·前端框架
琢磨先生TT1 小时前
为什么很多后台系统功能不少,看起来却还是很廉价?
前端·vue.js·设计