如何在JavaScript中扩展XMLHttpRequest对象?

时间:2011-02-08 10:36:38

标签: javascript ajax javascript-events

我想扩展现有的XMLHttpRequest对象,以便它可以与所有浏览器一起使用。现在我已经开始使用JS inheritance但事情在开始之前我希望看到它的好例子。

HTML5有上传和进展事件,我希望在继承的新对象中实现,即使不向客户端引入JS错误也不支持该功能,也可以表现。所以我想实现这样的目标。

Class XMLHttpRequest{}
Class UploadXMLHttpRequest: XMLHttpRequest{}

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

UploadXMLHttpRequest.prototype.uploadFile = function(file){

}

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

1 个答案:

答案 0 :(得分:7)

不要这样做。 XMLHttpRequest是一个宿主对象,您不应该尝试扩展它。引用Kangax

  

DOM扩展的下一个问题是    DOM对象是主机对象,和   主机对象是最糟糕的一堆。通过   规范(ECMA-262 3rd.ed),主持人   允许对象做事,不   其他物品甚至可以梦想。至   引用相关部分 [8.6.2]

     
    

主机对象可以实现这些     内部方法与任何     依赖于实现的行为,或     它可能是一个宿主对象     仅实现一些内部方法     而不是其他人。

  

这也意味着主机对象可能会使用prototype来禁止扩展。

然而,正如Kangax advices,您可以围绕XMLHttpRequest创建一个包装器并随意做任何事情。