范围变成整个对象,监听的操作变多,动态监听,不影响原对象
-
监听范围:
- Proxy 可以监听整个对象,包括对象的属性、方法、索引等。
- Object.defineProperty 只能监听已定义的属性,无法监听动态添加的属性。
-
监听能力:
- Proxy 可以监听对象的各种基本操作,包括属性读取、属性赋值、函数调用等。
- Object.defineProperty 主要只能监听属性的读取和赋值操作。
-
动态监听:
- Proxy 可以动态监听新增或删除的属性。
- Object.defineProperty 需要预先定义好要监听的属性,无法动态监听新增属性。
-
影响原对象:
- Proxy 生成的代理对象不会影响到原始对象,两者是独立的。
- Object.defineProperty 会直接修改原始对象的属性描述符,从而影响到原对象。