js Proxy()

2021-04-14  本文已影响0人  small_zeo

定义

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

语法

const p = new Proxy(targe, handler)

参数

示例

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
上一篇下一篇

猜你喜欢

热点阅读