美文网首页
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