es6中新增了Proxy
今天说说Proxy与Object.defineProperty的区别
Proxy的优势如下:
- Proxy可以直接监听对象而非属性
- Proxy可以直接监听数组的变化
- Proxy有多达13中拦截方法,不限于apply,ownKeys,deleteProperty,has 等等是Object.defineProperty不具备的;
- Proxy返回的是一个新对象,我们可以只操作新的对象达到目的,而Object.defineProperty只能遍历对象属性直接修改;
- Proxy作为新标准将受到浏览器厂商重点持续的性能优化,也是传说中的新标准的性能红利;
- 存在浏览器兼容性的问题
Object.defineProperty的优势如下:
- 兼容性好,支持IE9,而Proxy的存在浏览器兼容性问题,而且无法用polyfill磨平,因此Vue的作者声明需要等到下个大版本(3.0)才能用Proxy重写。