我有一个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'))
有没有办法知道是通过方法还是通过数组键调用某些东西?