在一个系统中,总要在一个对象中,存储一些数据,对于这些数据,可能有一些是希望我们访问的,但是总有一些是重要的,不希望被访问,希望保护起来,因此ES6新增了代理,实现这一特征
语法 通过Proxy实现:
new Proxy(obj, {set, get})
第一个参数:obj表示被代理的对象
第二个参数:{set, get}表示操作被代理对象的对象
操作被代理对象的set方法:
get(obj, key) 表示取值方法:
obj 表示被代理的对象
key 表示获取的属性
返回值很重要:就是获取的数据 this指向操作对象
注意:绝对不能获取代理对象(proxy)的key属性
操作被代理对象的set方法:
set(obj, key, value) 表示赋值方法
obj 表示被代理的对象
key 表示修改的属性
value 表示修改的属性值 this指向操作对象 不需要返回值
注意:绝对不能在里面修改代理对象(proxy)的key属性
代理跟特性很像
特性是对同一个对象的操作,数据不能在当前属性下存储,存储在备份中
代理是对不同的对象的操作,数据可以直接存储在当前属性下,原对象属性没有发生改变