Java资源分享网 - 专业的Java学习网站 学Java,上Java资源分享网
2024前端开发面试题 PDF 下载
发布于:2024-08-10 09:57:50
(假如点击没反应,多刷新两次就OK!)

2024前端开发面试题 PDF 下载  图1

 

 

资料内容:

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
将函数作为上下文对象的一个属性。
判断参数值是否传入
使用上下文对象来调用这个方法,并保存返回结果。
删除刚才新增的属性
返回结果