代理服务器阵列有一个与方法名称

时间:2018-06-05 19:49:58

标签: javascript typescript

我有一个Proxy我的构造函数返回,我不知道如何解决当我将项添加到键值对象数组时的问题,如{key: 'abc', value: 123},关键是与get等对象中的方法相同,我尝试调用方法example.get()我收到以下错误:

  

未捕获的TypeError:example.get不是函数

如果我没有使用键get添加项目,则该方法运行且没有错误。

class Example {

  constructor() {
    this.items = []
    return new Proxy(this, {
      get(target, key) {
        let item = target.items.find(i => i.key == key)
        if (item) return item.value
        return Reflect.get(target, key)
      }
    })
  }

  get(key) {
    return this.items.find(i => i.key === key).value
  }

  add(key, value) {
    this.items.push({
      key,
      value
    })
  }

}

let example = new Example

example.add('nonvalue', 'a non value')
example.add('get', 'myvalue')

console.log(example['nonvalue'])
console.log(example.get('nonvalue'))

有没有办法知道是通过方法还是通过数组键调用某些东西?

0 个答案:

没有答案