持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第3天
1. JS篇 call 、 apply 和bind区别?
| call | apply | bind | |
|---|---|---|---|
| 作用 | 改变函数执行的上下文(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.返回这个新对象 |
| 特殊 | * 如果构造函数里面有返回值怎么办? 1. return 与this无关对象, 返回「 return后的对象 」 2. return 不是对象 , 返回 「 this对象 」 3. 没有return , 默认返回this对象 |
3. JS 篇防抖和节流的区别?
| 防抖 | 节流 | |
|---|---|---|
| 目的 | 限制函数的「 执行次数 」 | 减少一段时间的触发「频率」 |
| 概念 | 1. 某函数,一段时间后执行; 2. 若这段时间内,被「触发多次」,则重新计算执行时间; 3. 这段时间内,只执行「最后一次」 | 某函数,一定时间内,只执行「 开始的一次」,之后请求无视 |
| 原理 | 1. 「利用定时器」。 2. 函数执行,通过闭包缓存,再次调用,清空上次定时器 3. 重新设置定时器, 定时器时间结束「触发函数」 | 1. 通过「时间戳」 2. 通过「布尔类型变量」判断是否可执行。 |
| 代码 | ||
| 场景 | 1. window.resize、scroll; 2. mousedown、 mousemove; 3. keyup、keydown; 4. 搜索输入框 |