# 题目描述
请补全JavaScript
代码,请给参数对象添加拦截代理功能,并返回这个代理,要求每当通过代理调用该对象拥有的属性时,"count"
值加1,否则减1
# 思路
Proxy
虽然是代理,但是本质还是对原对象进行操作,所以要结合Reflect
使用,才是真正的不再对原对象进行直接操作,而且Reflect有返回值。
Proxy
是js
中的内置对象,允许在访问对象之前对其进行拦截和定制,使用new Proxy
(被拦截的对象,处理方法)
Reflect
是js
中的静态方法集合,其提供了对对象的常见操作的封装,Reflect.get(obj, key)
可以得到对象obj
中键key
对
# 代码实现
const _proxy = (object) => {
// 补全代码
let proxy = new Proxy(object, {
get(target, prop) {
const isSuccess = Reflect.get(target, prop);
if (prop in target) {
count++;
} else {
count--;
}
},
});
return proxy;
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13