ES6的Proxy参数说明

209 阅读2分钟

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` 的第二个参数可以不包含所有这些属性,你可以选择只实现你感兴趣的属性。