Proxy 与 Object.defineProperty 的区别及优劣势

Proxy 的优势如下:

  • Proxy代理整个对象,Object.defineProperty只代理对象上的某个属性;
  • 数组新增删除修改时,Proxy可以监听到;
  • Proxy 有多达 13 种拦截方法,不限于 apply、ownKeys、deleteProperty、has 等等是 Object.defineProperty 不具备的;
  • 如果对象内部要全部递归代理,则Proxy可以只在调用时递归,而Object.defineProperty需要在一开始就全部递归,Proxy性能优于Object.defineProperty;
  • 对象上定义新属性时,Proxy可以监听到;

Object.defineProperty 的优势如下:

  • 兼容性好,支持 IE9及以上,而 Proxy 的存在浏览器兼容性问题,而且无法用 polyfill 磨平,因此 Vue 的作者才声明需要等到下个大版本( 3.0 )才能用 Proxy 重写。

 

posted @ 2021-03-03 13:43  光头小生  阅读(1011)  评论(0编辑  收藏  举报