为了账号安全,请及时绑定邮箱和手机立即绑定

es6的proxy和getter/setter区别是什么?

es6的proxy和getter/setter区别是什么?

汪汪一只猫 2019-02-13 17:15:42
我是否可以理解为,getter和setter设置得粒度小,是针对某个特定的,存在的属性设置的而proxy粒度更大,即使是将要设置一个还未存在的属性时,就会被get/set拦截。(当然proxy提供了很多方法 只讨论get set)不考虑兼容性问题,是不是用proxy做数据的绑定比getter/setter更简洁,更优雅一些呢?
查看完整描述

1 回答

?
忽然笑

TA贡献1806条经验 获得超5个赞

功能不一样,针对的问题不一样。

getter/setter 是设计对象对外暴露的计算属性用的,是对象本身有意而为之,让一个属性访问像调用一个方法一样, 对象内部能监控某个属性的访问,对外又像一个普通属性一样。Proxy是设计模式的实现,其意图是先有一个对象,你用 proxy 在上面加了一层代理,被代理对象本身是不知情它的属性访问被人监控了

当然像 Vue 一样,它可以用 defineProperty setter/getter 来实现 Proxy 类似的功能,但是终归有 HACK 的味道在里面。

不是说奇技淫巧不好,但是一定要分得清什么是顺理成章的实现,什么是奇技淫巧。


查看完整回答
反对 回复 2019-02-23
  • 1 回答
  • 0 关注
  • 793 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信