Java知识分享网 - 轻松学习从此开始!    

Java知识分享网

Java1234官方群25:java1234官方群17
Java1234官方群25:838462530
        
SpringBoot+SpringSecurity+Vue+ElementPlus权限系统实战课程 震撼发布        

最新Java全栈就业实战课程(免费)

springcloud分布式电商秒杀实战课程

IDEA永久激活

66套java实战课程无套路领取

锋哥开始收Java学员啦!

Python学习路线图

锋哥开始收Java学员啦!

2024前端开发面试题 PDF 下载


分享到:
时间:2024-08-10 10:05来源:http://www.java1234.com 作者:转载  侵权举报
2024前端开发面试题
失效链接处理
2024前端开发面试题 PDF 下载
 
 
 
相关截图:

 
主要内容:
 
1 callapplybind的区别
相同点:
  作用相同,都是动态修改this指向;都不会修改原先函数的this指向。
异同点:
1. 执行方式不同:
callapply是改变后页面加载之后就立即执行,是同步代码
bind异步代码,改变后不会立即执行;而是返回一个新的函数
2. 传参方式不同:
callbind传参是一个一个逐一传入
apply可以使用数组的方式传入的 。
call apply不能使用剩余参数的方式传参,bind 可以使用剩余参数的方式传入(柯里化)。
3. 修改this的性质不同:
callapply只是临时的修改一次,也就是callapply方法的那一次;当再次调用原函数的时候,它的指
向还是原来的指向。
 
手写 call 函数
call 函数的实现步骤:
判断调用对象是否为函数,即使我们是定义在函数的原型上的,但是可能出现使用 call 等方式调用的情况。
判断传入上下文对象是否存在,如果不存在,则设置为 window 
处理传入的参数,截取第一个参数后的所有参数。
将函数作为上下文对象的一个属性。
使用上下文对象来调用这个方法,并保存返回结果。
删除刚才新增的属性。
返回结果。
 
手写 apply 函数
我们已经了解了 call的实现原理,call() 方法接受的是参数列表,而 apply() 方法接受的是一个参数数
组。所以在 call 实现的基础上我们很容易写出 apply
apply 函数的实现步骤:
判断调用对象是否为函数,即使我们是定义在函数的原型上的,但是可能出现使用 call 等方式调用的情况。
判断传入上下文对象是否存在,如果不存在,则设置为 window 
将函数作为上下文对象的一个属性。
判断参数值是否传入
使用上下文对象来调用这个方法,并保存返回结果。
删除刚才新增的属性
返回结果
 


 

------分隔线----------------------------

锋哥公众号


锋哥微信


关注公众号
【Java资料站】
回复 666
获取 
66套java
从菜鸡到大神
项目实战课程

锋哥推荐