javascript - 如何在 JavaScript 中扩展 XMLHttpRequest 对象?

标签 javascript ajax dom-events

我想扩展现有的 XMLHttpRequest对象,以便它可以与所有浏览器一起使用。现在我经历了JS inheritance的低谷然而,在开始之前,我想看看它的好例子。
HTML5 有上传和进度事件的东西,我想在继承的新对象中实现这些东西,即使不向客户端引入 JS 错误不支持该功能,它也可以运行。所以我想实现这样的目标:

Class XMLHttpRequest{}
Class UploadXMLHttpRequest: XMLHttpRequest{}
可以在 UploadXMLHttpRequest 附加其他方法类如下。
UploadXMLHttpRequest.prototype.uploadFile = function(file){

}
考虑到 YUI、jQuery 等在市场上都很好,没有人真正想做这件事,这让我很难找到好的资源。

最佳答案

不要这样做。 XMLHttpRequest是一个宿主对象,你不应该尝试扩展它。报价 Kangax :

Next problem with DOM extension is that DOM objects are host objects, and host objects are the worst bunch. By specification (ECMA-262 3rd. ed), host objects are allowed to do things, no other objects can even dream of. To quote relevant section [8.6.2]:

Host objects may implement these internal methods with any implementation-dependent behaviour, or it may be that a host object implements only some internal methods and not others.



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

然而,作为 Kangax 也 advices ,您可以在 XMLHttpRequest 周围创建一个包装器并随心所欲地使用它。

关于javascript - 如何在 JavaScript 中扩展 XMLHttpRequest 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4931977/

相关文章:

javascript - 如何使用 jquery 或其他方式识别没有特殊 id 的 html 元素?

javascript - 如何使用 Ajax 保存前几个选项卡上的数据并提交在最后一个选项卡上输入的数据?

Javascript onclick事件调用对象

javascript - scriptaculous draggables : need to cancel onClick action when element is dragged

javascript - 单击事件后清除输入值

javascript - 输入值未显示(AngularJS)

javascript - 在 React-Native Navigator 中传递 props/state

javascript - 使用堆叠布局时将自定义值字段映射到 x 值

jquery - 简单的 WordPress AJAX 分页

java - POST 和 GET 请求,在 PHP 中使用它们