const handler = {
    // Get the prototype of the object
    getPrototypeOf(target) {
       /** * trigger: * * Object.getPrototypeOf() * Reflect.getPrototypeOf(target) * __proto__ * Object.prototype.isPrototypeOf() * instanceof * * /
    },
    // Set the prototype of the object
    setPrototypeOf(target, prototype) {
       /** * trigger: ** object.setProtoTypeof () * reflect.setprototypeof (target, prototype) ** /
    },
    // Determine whether the object is extensible
    isExtensible(target) {
        /** * Trigger: ** Object. IsExtensible () * Reflect. IsExtensible (target) ** /
    },
    // Block extension
    preventExtensions(target) {
        /** * trigger: * * Object.preventExtensions() * Reflect.preventExtension(target) * */
    },
    // Get your own property descriptor
    getOwnPropertyDescriptor(target, property) {
        /** * trigger: * * Object.getOwnPropertyDescriptor() * Reflect.getOwnPropertyDescriptor(target, property) * */
    },
    // Sets the accessor properties of the object
    defineProperty(target, property, descriptor) {
        /** * trigger: * * Object.defineProperty() * Reflect.defineProperty(target, propertyKey, descriptor) * */
    },
    // Determine whether a property exists in the object
    has(target, property) {
        /** * trigger: * * foo in proxy * foo in Object.create(proxy) * with(proxy) {(foo)} * */
    },
    // Get the property value of the object
    get(target, property, receiver) {
        /** * trigger: * * proxy[foo] proxy.bar * Object.create(proxy)[foo] * Reflect.get(target, property, receiver) * */
    },
    // Set the property value of the object
    set(target, property, value, receiver) {
       /** * trigger: * * proxy[foo] = bar proxy.foo = bar * Object.create(proxy)[foo] = bar * Reflect.set(target, property, value, receiver) * */
    },
    // Delete the attributes of the object
    deleteProperty(target, property) {
       /** * trigger: * * delete proxy[foo] delete proxy.foo * Reflect.deleteProperty(target, property) * */
    },
    // The function object specifies the running context
    apply(target, thisArg, argumentsList) {
       /** * trigger: * * proxy(... args) * Function.prototype.apply() Function.prototype.call() * Reflect.apply(target, thisArgument, argumentsList) * */
    },
    // Create instance interception
    construct(target, argumentsList, newTarget) {
        /** * trigger: * * new proxy(... args) * Reflect.construct(target, argumentsList, newTarget) * */}};Copy the code