千锋教育web前端高频面试题视频教程,kerwin大话前端面试秘籍(附答案)
1.解释单向数据流和双向数据绑定
对于Vue来说,组件之间的数据传递具有单向数据流这样的特性称为单向数据流,单向数据流(Unidirectional data flow)方式使用一个上传数据流和一个下传数据流进行双向数据通信,两个数据流之间相互独立,单向数据流指只能从一个方向来修改状态。
而双向数据绑定是指当数据发生变化时,视图也发生变化,当视图发生变化,数据也会同步发生变化。两个数据流之间相互影响。
2.Object.defineProperty有什么缺点
1.无法监听es6的Set、Map变化;
2.无法监听Class类型的数据;
3.属性的添加和删除也无法监听;
4.数组元素的增加和删除也无法监听。
3.你知道Vue响应式数据原理吗?Proxy与Object.defineProperty优劣对比?
//响应式原理:
vue的响应式实现主要是利用了object.defineProperty方法里面的setter与getter方法的观察者模式来实现。在组件初始化时会给每一个data属性注册getter和setter,然后再new一个自己的Watcher对象,此时watcher会立即调用组件的render函数去生成虚拟DOM。在调用render的时候,就会需要用到data的属性值,此时会触发getter函数,将当前的Watcher函数注册进sub里。当data属性发生改变之后,就会遍历sub里所有的watcher对象,通知它们去重新渲染组件。
//proxy的优势如下:
Proxy可以直接监听对象而非属性,可以直接监听数组的变化;
Proxy有多达13种拦截方法,不限于apply、ownKeys、deleteProperty、has等等s是Object.defineProperty不具备的;
Proxy返回的是一个新对象。
//Object.defineProperty 的优势如下:
兼容性好,支持IE9,而Proxy的存在浏览器兼容性问题,而且无法用polyfill(垫片)来弥补。
4.生命周期
beforeCreate created beforeMount mounted beforeUpdate updated beforeDestory destroyed onUmmounted
beforeDestroy => beforeUnmount
destroyed => unmounted

