摘要:本文将全面的,详细解析call方法的实现原理
本文将全面的,详细解析call方法的实现原理,并手写出自己的call方法,相信看完本文的小伙伴都能从中有所收获。
call 方法的实现
调用函数,可传入参数,改变this指向
-
边界判断
-
判断当前 this 是否为一个函数,否则返回错误消息
-
判断传入的 context 参数是否存在,存在则使用 Object() 转换为对象赋给 context,否则将 window 赋值给 context
-
将调用的函数设置为对象(传入的context)的方法(改变this指向)
-
调用函数,得到返回值,并返回
-
调用函数,得到结果
- 删除 context 身上的 fn 函数
- 返回结果
经过原生的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/
转载文章受原作者版权保护。转载请注明原作者出处!