今天早上依旧背面试题,今天主要是代码这块,需要进行手敲进行一个理解 由于昨天讲了一个this指向,那么今天和this相关的call,apply,bind老大进行了一个讲解。 首先呢,这三个都是用来改变this指向的
call
格式:函数名.call(上下文环境,参数)
上下文环境:就是应用函数的作用域范围
参数:是以逗号分隔的参数列表
例如:aaa.call(obj,'bbb');
特点:1.改变this指向,2.函数被执行了
apply
格式:函数名.apply(上下文环境,参数)
这个同上面的call
bind
格式:函数名.bind(上下文环境,参数)
bind传参调用:
aaa.bind(obj,'微信小程序','Angular')()
aaa.bind(obj)('微信小程序','Angular')
特点:1.改变this指向,2.返回调用函数本身,函数没有被执行
那么下午主要讲了优化这块
防抖和节流
1. 防抖和节流相关的问题
```
解决页面高频触发或向后端连续请求的优化逻辑问题 例如:搜索,滚动加载
键盘:onkeydown(键盘按下),onkeyup(键盘抬起)
鼠标:onmousemove(鼠标移动)
浏览器事件:onresize(改变窗口尺寸),onscroll(滚动事件)
```
防抖
举例:比如电脑屏保,电梯的开关
防抖:即在固定n秒间隔内,不会执行代码逻辑,除非n秒内有事件触发,则会再延长n秒,直到n秒没有触发的事件,则在n秒后执行代码逻辑
节流
```
举例:每天有规律的时间学习,吃饭,跑步,不会因为杂事儿所打乱,类似闹钟是有规律的
节流:固定的时间节点,执行固定的代码逻辑
```
最后就是一个new的实例原理:
1.new一个构造函数时,中间发生了什么?
2.或者new一个构造函数,中间执行了哪些步骤?
答:
第一步:创建一个临时对象obj
第二步:获取构造函数赋值给Constructor
第三步:将obj的原型指向Constructor的原型,目的可以让实例化对象找到构造器原型上的方法
第四步:让Constructor属性作用于obj上,从而可以操作this.xxx的实例属性
第五步:返回临时对象obj
最后呢,郭晴同学进行了一个技术分享,给我们讲了让盒子居中的多种方法,讲的也很好,我恐怕是不会想的这么多,只知道个定位,弹性盒子还有margin:0 auto 只了解这几个,