1.promise的静态方法和原理:
静态方法有四种:
1.Promise.resolve()
此方法有一个可选的参数,参数的类型会影响它的返回值,具体可分为三种情况(如下所列),其中有两种情况会创建一个新的已处理的Promise实例,还有一种情况会返回这个参数。
(1)当参数为空或非thenable时,返回一个新的状态为fulfilled的Promise。
(2)当参数为thenable时,返回一个新的Promise,而它的状态由自身的then()方法控制,具体细节已在之前的thenable一节做过说明。
(3)当参数为Promise时,将不做修改,直接返回这个Promise。
2.Promise.reject()
此方法能接收一个参数,表示拒绝理由,它的返回值是一个新的已拒绝的Promise实例。与Promise.resolve()不同,Promise.reject()中所有类型的参数都会原封不动的传递给后续的已拒绝的回调函数
3.Promise.all()
此方法和接下来要讲解的Promise.race()都可用来监控多个Promise,当它们的状态发生变化时,这两个方法会给出不同的处理方式。
(1)当可迭代对象中的所有成员都是已完成的Promise时,新的Promise的状态为fulfilled。而各个成员的决议结果会组成一个数组,传递给后续的已完成的回调函数
(2)当可迭代对象中的成员有一个是已拒绝的Promise时,新的Promise的状态为rejected。并且只会处理到这个已拒绝的成员,接下来的成员都会被忽略,其决议结果会传递给后续的已拒绝的回调函数
4.Promise.race()
(1)能接收一个可迭代对象。
(2)成员必须是Promise,对于非Promise的值要用Promise.resolve()做转换。
(3)返回值是一个新的Promise实例。
2.闭包
闭包就是当一个函数可以调用另外一个函数内部变量的时候,这个函数就叫做闭包
闭包闭包可以用来延长作用域,获取函数内部变量
闭包容易造成内存泄漏
闭包主要作用于计时器函数
3.常见修饰符
1.表单修饰符
- lazy
- trim
- number
2.时间修饰符
- stop
- prevent
- self
- once
- capture
- passive
- native
3.鼠标修饰符
@click.left 左键
@click.right 右键
@click.middle 中键
4.键盘修饰符
普通键:enter/tab/esc
系统键有:ctrl/alt/meta
5.v-bind修饰符
sync
props
camel
4.父子组件生命周期
BeforeCrate(父)=>Crated(父)=>BeforeMont(父)=>BeforeCrate(子)=>Crated(子)=>BeforeMont(子)=>Monted(子)=>Monted(父)
5.vue响应式原理
分为三大步:
1.数据劫持
当new vue 的时候遍历data对象,然后通过Object.defineProperty给所有对象加上getter和setter
2.依赖收集
当进行render的过程时会出触发getter,在getter的时候把当前的watcher对象收集起来
3.派发更新
在进行setter的时候,遍历这个数组的watcher对象,然后进行更新
6.js判断数据类型的方法
我
7.key的作用
key作用主要是为了高效跟新虚拟DOM,
其执行原理是Vue在patch过程中通过key可以精准的判断两个节点是否为同一个,从而避免频繁的更新不同元素,从而减少DOM操作量,并提高性能