猿问

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

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

汪汪一只猫
浏览 794回答 1
1回答

忽然笑

功能不一样,针对的问题不一样。getter/setter 是设计对象对外暴露的计算属性用的,是对象本身有意而为之,让一个属性访问像调用一个方法一样, 对象内部能监控某个属性的访问,对外又像一个普通属性一样。Proxy是设计模式的实现,其意图是先有一个对象,你用 proxy 在上面加了一层代理,被代理对象本身是不知情它的属性访问被人监控了当然像 Vue 一样,它可以用 defineProperty setter/getter 来实现 Proxy 类似的功能,但是终归有 HACK 的味道在里面。不是说奇技淫巧不好,但是一定要分得清什么是顺理成章的实现,什么是奇技淫巧。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答