详解JS中 call 方法的实现

摘要:本文将全面的,详细解析call方法的实现原理

本文将全面的,详细解析call方法的实现原理,并手写出自己的call方法,相信看完本文的小伙伴都能从中有所收获。

call 方法的实现

调用函数,可传入参数,改变this指向

  1. 边界判断

  2. 判断当前 this 是否为一个函数,否则返回错误消息

  3. 判断传入的 context 参数是否存在,存在则使用 Object() 转换为对象赋给 context,否则将 window 赋值给 context

  4. 将调用的函数设置为对象(传入的context)的方法(改变this指向)

  5. 调用函数,得到返回值,并返回

  6. 调用函数,得到结果

  7. 删除 context 身上的 fn 函数
  8. 返回结果

经过原生的call方法和手写的binCall方法测试,我们手动实现的binCall方法也能实现原生call方法的功能

通过在传入的对象上,临时新增一个方法,这个方法的值是当前 binCall 的调用者。然后 context.fn(…argArray) 调用这个函数,通过隐式绑定的方式改变了 this 的指向,最后得到结果并返回。

Original: https://www.cnblogs.com/huaweiyun/p/16729971.html
Author: 华为云开发者联盟
Title: 详解JS中 call 方法的实现

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/617206/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球