小编典典

如何在JavaScript中扩展XMLHttpRequest对象?

ajax

我想扩展现有的XMLHttpRequest对象,以便它可以与所有浏览器一起使用。现在我已经对JS继承和其他方面有所了解,但是在开始之前,我希望看到它的一个很好的例子。

HTML5具有上载和进度事件的东西,我想在继承的新对象中实现,即使不通过向客户端引入JS错误不支持该功能,该对象也可以运行。所以我想实现这样的目标。

Class XMLHttpRequest{}
Class UploadXMLHttpRequest: XMLHttpRequest{}

可以将其他方法附加到UploadXMLHttpRequest类,如下所示。

UploadXMLHttpRequest.prototype.uploadFile = function(file){

}

考虑到YUI,JQuery和其他在市场上都很好,没有人真的想要这样做,这使我很难找到合适的资源。


阅读 195

收藏
2020-07-26

共1个答案

小编典典

不要这样
XMLHttpRequest是主机对象,您不应尝试对其进行扩展。引用Kangax

DOM扩展的下一个问题是 DOM对象是宿主对象
,而宿主对象是最糟糕的一堆。根据规范(ECMA-262第3版),允许宿主对象执行操作,甚至没有其他对象可以梦想。引用相关部分[8.6.2]

宿主对象可能以任何与实现相关的行为来实现这些内部方法,或者可能是宿主对象仅实现了某些内部方法,而没有实现其他方法。

这也意味着宿主对象可能不允许使用扩展prototype

但是,正如Kangax所建议的那样,您可以在周围创建包装器,XMLHttpRequest并随心所欲地对其进行处理。

2020-07-26