JS:无法反映代理对象?

时间:2020-03-21 06:03:37

标签: javascript proxy reflect

在阅读有关Proxy的同时。我想在XMLHttpRequest上进行测试以拦截文档的所有xhr请求。因此,我首先使用Proxy陷阱XMLHttpRequest编辑了construct来代理它的新创建实例,因此,我可以查看是否有任何onload被设置或调用。然后,获取响应。

但是,无论何时,我尝试代理反映的XMLHttpRequest时都会出错。我不知道这是什么意思,但仍然无法弄清楚。 这个Question似乎很像。但是我的头在旋转所以,有人可以帮助我吗?我不太熟悉新的class规范(尝试了几次但不多)。

这是什么错误?是什么原因造成的??因此,有什么方法可以代理Reflected Object?

function observer(x) {
  return new Proxy(x, {
    construct(a, b, c) {
      return observer(Reflect.construct(a, b, c));
    },
    set(a, b, c) {
      console.error(b, c);
    }
  })
}

XMLHttpRequest = observer(XMLHttpRequest);

let xhr = new XMLHttpRequest;
xhr.open('GET', 'http://example.com/', 1); // TypeError: 'open' called on an object that does not implement interface XMLHttpRequest.
xhr.onload = e => console.warn(e.target.status);
xhr.send();

谢谢。

0 个答案:

没有答案