请问各路javascript大侠:Ajax重构中的this.onload.call(this);还有this.onerror.call(this);是什么意思

Ajax重构部分代码:net.AjaxRequest.onReadyState=function(){varreq=this.req;varready=req.ready... Ajax重构部分代码:
net.AjaxRequest.onReadyState=function(){
var req=this.req;
var ready=req.readyState;
if (ready==4){
if (req.status==200 ){
this.onload.call(this);
}else{
this.onerror.call(this);
}
}
}
其他部分的代码能看懂 就这里的this.onload.call(this);和this.onerror.call(this);是什么意思呢 能不能详细点,谢谢各位!!
展开
 我来答
摩惠然0iD
2013-11-09 · TA获得超过1634个赞
知道小有建树答主
回答量:1162
采纳率:100%
帮助的人:837万
展开全部
call方法只能对函数有效。按照上述写法,在上述代码中,应当有这样的语句,

xhr.onload=function(){};
xhr.onerror=function(){};

否则不合理(this.onload会显示未定义)。

再看你的问题,this.onload指向的是绑定在此事件上的函数,一旦调用call函数就会立即执行,看上去的确是如此。后面的this.onerror同理。
追问
谢谢!前面的this跟后面括号里的this有什么区别呢
追答
没区别的。都是指向当前异步对象的
huohlr
2013-11-09 · TA获得超过144个赞
知道答主
回答量:146
采纳率:0%
帮助的人:79.4万
展开全部
你要先弄清楚call的作用。call的作用就是改变方法的执行环境。
你的那两个调用都是想在onload、onerror方法中影响执行作用域,以this.onload.call(this)说明:
前一个this和后一个this如果是同一个对象,那就可以不用call,直接this.onload()就行
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式