解释 ES6 中的处理程序方法
处理程序是一个对象,其属性是定义代理在对其执行操作时的行为的函数。一个空的处理程序将创建一个代理,该代理的行为几乎在所有方面都与目标完全相同。通过在处理程序对象上定义一组函数中的任何一个,您可以自定义代理行为的特定方面。例如,通过定义 get() 您可以提供目标属性访问器的自定义版本。
句法:
new Proxy(target, handler)
代理构造函数() :用于创建一个接受两个参数的代理对象。
参数:
- 目标:用代理包装的目标对象。它可以是任何类型的对象,包括原生数组、函数,甚至是另一个代理。
- handler:一个对象,其属性是定义代理在其上执行操作时的行为的函数。
处理程序方法列表:本节列出了您可以定义的所有处理程序方法。处理程序方法有时称为陷阱,因为它们会捕获对底层目标对象的调用
- handler.apply():函数调用的陷阱。
- handler.construct():新运算符的陷阱。
- handler.defineProperty():Object.defineProperty 的陷阱。
- handler.deleteProperty():删除运算符的陷阱。
- handler.get():获取属性值的陷阱。
- handler.getOwnPropertyDescriptor():Object.getOwnPropertyDescriptor 的陷阱。
- handler.getPrototypeOf():Object.getPrototypeOf 的陷阱。
- handler.has():in运算符的陷阱。
- handler.isExtensible():Object.isExtensible 的陷阱。
- handler.ownKeys():Object.getOwnPropertyNames 和 Object.getOwnPropertySymbols 的陷阱。
- handler.preventExtensions():Object.preventExtensions 的陷阱。
- handler.set():设置属性值的陷阱。
- handler.setPrototypeOf():Object.setPrototypeOf 的陷阱。
示例:在此示例中,目标具有两个属性,字符串和数字。我们定义了一个处理程序,它为 num 返回一个不同的值,并允许任何其他访问通过目标。
Javascript
输出:
GeeksForGeeks
123