「js篇」call, bind, apply,new,防抖节流

311 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第3天

1. JS篇 call apply 和bind区别?

callapplybind
作用改变函数执行的上下文(this指向)改变this指向改变this指向
特点添加在「函数原型」上的方法添加在「函数原型」上的方法多次调用无效
相同点1. 接受「 两个参数 」,第一个参数是「this指向」, 第二个参数是  参数列表
2. 「 第一个参数 」 是「undefined或null」,都会指向 window;
是「基本类型」,内部会调用构造函数创建实例,指向这个对象;
是「引用类型」,内部this指向这个对象
3. 只临时改变this一次
区别1. 关于第一个参数, 改变this后,「立即执行
2. 第二个参数传入是「一次性传入
1. 关于第一个参数, 改变this后,「立即执行
2. 第二个参数传入是「一次性传入
1. bind返回 绑定this之后的函数, 「 不能立即执行 」( 返回的函数
2. 第二个参数可以分为「多次传入
区别1. 第二个参数是「参数列表1. 第二个参数是「数组1. 第二个参数是「参数列表
场景1. 继承 Father.call(this)
2. 判断数据类型: Object.prototype.toString.call([])

3. JS篇 new关键字执行过程?

 new 关键值执行过程
过程1. 在内存中,创建了一个空的对象;2. this就会指向刚才创建的空对象;
3.执行构造函数里面的代码,给空对象添加属性和方法;
4.返回这个新对象
截屏2022-05-30 下午8.29.05.png
特殊* 如果构造函数里面有返回值怎么办?
1. return 与this无关对象, 返回「 return后的对象
2. return 不是对象 返回 this对象
3. 没有return
, 默认返回this对象

3. JS 篇防抖和节流的区别?

 防抖节流
目的限制函数的「 执行次数 」减少一段时间的触发「频率」
概念1. 某函数,一段时间后执行;
2. 若这段时间内,被「触发多次」,则重新计算执行时间;
3. 这段时间内,只执行「最后一次
某函数,一定时间内,只执行「 开始的一次」,之后请求无视
原理1. 「利用定时器」。
2. 函数执行,通过闭包缓存,再次调用,清空上次定时器
3. 重新设置定时器, 定时器时间结束「触发函数」
1. 通过「时间戳
2. 通过「布尔类型变量判断是否可执行。
代码截屏2022-05-30 下午5.31.50.png
截屏2022-05-30 下午5.59.58.png
截屏2022-05-30 下午6.29.15.png
场景1. window.resize、scroll;  
2. mousedown、 mousemove;  
3. keyup、keydown;
 4. 搜索输入框