美文网首页
js Proxy()

js Proxy()

作者: small_zeo | 来源:发表于2021-04-14 11:33 被阅读0次

    定义

    Proxy 对象用于创建一个对象的代理,从而实现基本操作的拦截和自定义(如属性查找、赋值、枚举、函数调用等)。

    语法

    const p = new Proxy(targe, handler)
    

    参数

    • target: 要使用Proxy包装的目标对象(可以是任何类型的对象,包括原生数组,函数,甚至另一个代理)

    • handler: 一个通常以函数作为属性的函数分别定义了在执行各种操作时,代理p的行为。

    示例

    const handler = {
      get: function (obj, prop) {
        return prop in obj ? obj[prop] : 107
      }
    }
    
    const p = new Proxy({}, handler)
    p.a = 1
    p.b = undefined
    
    const p = new Proxy({}, handler)
    p.a = 1
    p.b = undefined 
    console.log(p.a, p.b) // 1, undefined
    console.log('c' in p, p.c) // false, 37
    
    通过代理, 你可以轻松地验证向一个对象的传值
    let validator = {
      set: function (obj, prop, value) {
        if (prop === 'age') { 
            if (!Number.isInteger(value)) {
              throw new TypeError('The age is not an integer')
            }
            if (value > 200) {
              throw new RangeError('The age seems invalid')
            }
        }
        obj[prop] = value
        return true
      }
    }
    
    let person = new Proxy({}, validator)
    person.age = 100 // true
    person.age = 'young' // The age is not an integer
    person.age = 300 // The age seems invalid
    

    相关文章

      网友评论

          本文标题:js Proxy()

          本文链接:https://www.haomeiwen.com/subject/bbexlltx.html