export default class Promise extends XMLHttpRequest {
constructor(url: string, type: string) {
super();
config.url = url;
config.requestType = type;
}
}
在这里,我创建了一个扩展类XMLHttpRequest
的类承诺。
然后我尝试使用下面给出的方法访问这个类。
let prom = new Promise('api/200', 'get');
进入超级电话时出现以下错误
无法构造'XMLHttpRequest':请使用'new'运算符,此DOM对象构造函数不能作为函数调用
答案 0 :(得分:4)
这可能是因为XMLHttpRequest
是托管对象,有时在扩展时行为不端。
幸运的是,如果你用es6类扩展它会发生变化 编译时:
class RequestPromise extends XMLHttpRequest {
constructor() {
super();
}
}
至于es5,你得到:
var __extends = (this && this.__extends) || function (d, b) {
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
var RequestPromise = (function (_super) {
__extends(RequestPromise, _super);
function RequestPromise() {
_super.call(this);
}
return RequestPromise;
}(XMLHttpRequest));
但是当用目标es6编译它时,它将保持类的原样:
class RequestPromise extends XMLHttpRequest {
constructor() {
super();
}
}
如果你尝试它应该可以正常工作
答案 1 :(得分:-1)
XMLHttpRequest可以非常轻松地发送HTTP请求。您只需创建对象的实例,打开URL并发送请求。
var oReq = new XMLHttpRequest();