6月2

108 阅读2分钟

今天早上依旧背面试题,今天主要是代码这块,需要进行手敲进行一个理解 由于昨天讲了一个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 只了解这几个,