Array.push()上的Javascript代理不会触发set?

时间:2018-03-27 13:04:28

标签: javascript proxy

我正在使用代理,一切正常,直到我在我的代理附加到的对象上添加了一个数组属性:

let input = document.querySelector('input')
input.addEventListener('change', e => {
  let val = e.target.value
  proxObj.foo = val
  proxObj.fooArray.push(val)
})

let obj = {
  foo: "bar", //log : foo mutated to whatever
  fooArray: [] //never logs
}

proxObj = new Proxy(obj, {
  set: (target, prop, val) => {
    console.log(prop, "mutated to", val)
    target[prop] = val
    return true
  }
})
<input type='text'>

<button onClick="console.log(obj.fooArray)"> log fooArray</button>

正如你在这里看到的,我希望fooArray可以打印出变异,但它并没有发生。我在这做错了什么?

0 个答案:

没有答案