1. `get(target, property, receiver)`
- 在代理对象上获取某个属性的值时调用。
- 参数 `target` 是被代理的目标对象,`property` 是属性名,`receiver` 是代理对象或其子代。
- 返回值:属性的值。
2. `set(target, property, value, receiver)`
- 在代理对象上设置某个属性的值时调用。
- 参数 `target` 是被代理的目标对象,`property` 是属性名,`value` 是属性的新值,`receiver` 是代理对象或其子代。
- 返回值:布尔值,表示属性值是否被成功设置。
3. `has(target, property)`
- 检查代理对象是否拥有某个属性时调用。
- 参数 `target` 是被代理的目标对象,`property` 是属性名。
- 返回值:布尔值,表示代理对象是否拥有该属性。
4. `deleteProperty(target, property)`
- 删除代理对象上的某个属性时调用。
- 参数 `target` 是被代理的目标对象,`property` 是属性名。
- 返回值:布尔值,表示属性是否被成功删除。
5. `ownKeys(target)`
- 获取代理对象上所有自有属性的属性名时调用。
- 参数 `target` 是被代理的目标对象。
- 返回值:包含所有自有属性的属性名的数组。
6. `getOwnPropertyDescriptor(target, property)`
- 获取代理对象上某个自有属性的属性描述符时调用。
- 参数 `target` 是被代理的目标对象,`property` 是属性名。
- 返回值:一个对象,包含属性的描述符信息。
7. `defineProperty(target, property, descriptor)`
- 在代理对象上定义一个新的属性时调用。
- 参数 `target` 是被代理的目标对象,`property` 是属性名,`descriptor` 是属性的描述符信息。
- 返回值:布尔值,表示是否成功定义了属性。
8. `getPrototypeOf(target)`
- 获取代理对象的原型时调用。
- 参数 `target` 是被代理的目标对象。
- 返回值:代理对象的原型。
9. `setPrototypeOf(target, prototype)`
- 设置代理对象的原型时调用。
- 参数 `target` 是被代理的目标对象,`prototype` 是新的原型对象。
- 返回值:布尔值,表示是否成功设置了原型。
10. `apply(target, thisArg, args)`
- 调用代理对象上的方法时调用。
- 参数 `target` 是被代理的目标对象,`thisArg` 是方法调用时的 `this` 值,`args` 是方法调用时传递的参数。
- 返回值:方法的返回值。
11. `construct(target, args,
newTarget)`
- 代理对象作为构造函数调用时调用。
- 参数 `target` 是被代理的目标对象,`args` 是构造函数调用时传递的参数,`newTarget` 是新创建的实例对象。
- 返回值:代理对象作为构造函数调用时的返回值。
请注意,`Proxy` 的第二个参数可以不包含所有这些属性,你可以选择只实现你感兴趣的属性。