我想扩展现有的 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/