JavaScript错误与继承请求对象
问题描述:
为试用我的目的阅读this mdn article about inheritance后,我想创造直接来自XMLHttpRequest的继承像这样的对象:JavaScript错误与继承请求对象
function Request(url){
XMLHttpRequest.call(this);
};
Request.prototype = Object.create(
new XMLHttpRequest(),{
'constructor' : {
'value' : Request,
'enumerable' : true
},
'toString' : {
'value' : function(){
return '[Object Request]';
},
'enumerable' : true
}
});
这本身不会造成任何麻烦,但是当我尝试使用一个实例。刚创建后调用继承。开(方法,位置) - 方法使得浏览器抛出这个错误:
有谁有一个想法,为什么这个错误是扔?我尝试了与其他对象的继承技术,它工作得很好,为什么不用XMLHttpRequest呢?
问候philipp
答
大多数DOM构造函数不能被继承。我不知道你没有得到WRONG_THIS_ERROR
...
I tried this technique of inheritance with other Objects and it worked very fine
它适用于功能的构造,因为他们.call
method做类似的事情为[[construct]]
称为as a constructor with the new
keyword什么时候。
Why not with the XMLHttpRequest?
因为它是天然的对象及其[[construct]]
将调用一些本机代码,而不是[[call]]
荷兰国际集团的功能体。其实[[call]]
行为将被定义为像[[construct]]
一样工作,因此XMLHttpRequest
可以在没有new
的情况下被调用,但也会返回一个新的实例。你可以尝试xhr = XMLHttpRequest.call(anything)
- 它不会改变anything
,但返回一个新的对象。
而不是从它继承(或甚至扩展本地原型),围绕它构建一个包装。
签出jQuery的.Ajax().Post().Get()方法他们已经做了类似于你想要的maby? – John 2012-08-17 14:05:34
我知道jquery可以做所有事情,所以我想尝试一下。 – philipp 2012-08-17 14:08:26