Vue3.0开始使用Proxy取代defineProperty,关于Proxy,今天小编也来研究一番。
Proxy: 代理。在js中,就是对已有对象做些处理,得到一个新的对象,这个新对象的属性读取与设置都可以加入我们自己的处理逻辑。
Proxy: 代理。在js中,就是对已有对象做些处理,得到一个新的对象,这个新对象的属性读取与设置都可以加入我们自己的处理逻辑。
1 | const proxyObj = new Proxy(origin, { |
先看个🌰,来个整体认识:
1 | const origin = { |

看上去跟defineProperty无区别,不过:

对origin追加属性的操作会同步至proxyObj,这特性很nice。
此外我们可以留意:
- 对原始对象的属性修改会同步至代理对象上;
- 对代理对象的属性修改也会同步至原始对象上。
语法
1 | const proxy = new Proxy(origin, controller); |
controller可以是空对象{},表示对 proxy 的属性操作都会同步至origin上。
数据双向绑定
html:
1 | <div id="bind"></div> |
js:
1 | function handleInput(e) { |
See the Pen
proxy by Iona (@lozoe)
on CodePen.
参考: