总结
用户体验要比性能优先级更高。
性能
time_normal: 124.792724609375 ms
time_proxy: 1297.6669921875 ms
time_noreflect: 694.0869140625 ms
time_proxy_notrap: 104.242919921875 ms
time_define: 902.042236328125 ms
参考文章发现 time_define 是没有 time_noreflect 好的,但是 time_define 比 time_proxy 强。
vue中使用 time_proxy 方式,因为 reflect 不阻塞报错,并且可以返回结果。
属性监听:
defineProperty: 遍历对象,劫持对象的每一个属性; Proxy: 劫持整个对象,并返回一个代理对象;
对数组方法的支持:
defineProperty: push…等(八种方法)不能监听,需要hack;Proxy: 可以监听;
兼容:
defineProperty(ES5)兼容性比Proxy(ES6)好。
引用的文章: