摘要:本文将全面的 , 详细解析call方法的实现原理本文分享自华为云社区《关于 JavaScript 中 call 方法的实现 , 附带详细解析!》 , 作者:CoderBin 。
本文将全面的 , 详细解析call方法的实现原理 , 并手写出自己的call方法 , 相信看完本文的小伙伴都能从中有所收获 。
call 方法的实现1.函数作用【详解JS中 call 方法的实现】调用函数 , 可传入参数 , 改变this指向
2.总体步骤
- 边界判断(this,context)
- 将调用的函数设置为对象(传入的context)的方法(改变this指向)
- 调用函数 , 得到返回值 , 并返回
- 判断当前 this 是否为一个函数 , 否则返回错误消息
- 判断传入的 context 参数是否存在 , 存在则使用 Object() 转换为对象赋给 context , 否则将 window 赋值给 context
- 调用函数 , 得到结果
- 删除 context 身上的 fn 函数
- 返回结果
6. 细节解析
- this 指向的就是调用 binCall() 的那个函数(隐式绑定);
- 传入的 context 参数表示:将 this 的指向改为这个参数;
- 改变 this 指向其实就是在 context 上添加一个临时的方法 , 值为 this;
- 调用 context.fn() 时 , 就已经改变了 this 的指向 , 同时得使用展开运算符传入参数
- delete context.fn 删除那个临时方法是因为已经不需要用了
点击关注 , 第一时间了解华为云新鲜技术~
经验总结扩展阅读
- 24 《吐血整理》高级系列教程-吃透Fiddler抓包教程-Fiddler如何优雅地在正式和测试环境之间来回切换-中篇
- 篮球的换人规则
- 中国佛教四大名山
- 中国五大淡水湖
- 生活中辨别方向的方法有哪些
- 元朝多少年
- 关于吃饱减肥的说说
- 拳皇中八神是谁的儿子
- 2023年10月21日修路好不好 2023年10月21日修路行吗
- 一天中健身的合适时间是什么时候