当我这样做时
for (key in XMLHttpRequest.prototype) {
console.log(key);
}
在返回的属性列表中,我得到timeout
。在同一个控制台中,当我输入
XMLHttpRequest.prototype.timeout
我收到此错误:Uncaught TypeError: Illegal invocation
为什么?
如何将超时引用的对象分配给另一个变量?
答案 0 :(得分:1)
您需要在XMLHttpRequest
创建的实例上调用getter。它应该已经从XMLHttpRequest.prototype
继承,所以以下可能就足够了:
instance.timeout
如果由于某种原因你改变了instance
的[[原型]]链或阴影timeout
,那么你可以手动调用getter:
Object.getOwnPropertyDescriptor(XMLHttpRequest.prototype, "timeout")
.get.call(instance);
或者,自ES6以来,
Reflect.get(XMLHttpRequest.prototype, "timeout", instance);
答案 1 :(得分:0)
timeout
似乎是必须在实际的XHR 实例上调用的getter,而不是XMLHttpRequest.prototype
。它没有引用任何对象,您无法将其分配给任何对象。