下述JavaScript代码中onload回调内的「this」指向哪个对象
关于代码中this的指向说明
你代码里标记的this,指向的就是当前发起请求的XMLHttpRequest实例,也就是你代码里定义的req变量对应的对象。
指向的判断依据
- 普通函数的
this遵循「谁调用就指向谁」的绑定规则:你给req.onload赋值了一个普通匿名函数,当请求完成触发onload事件时,这个函数是由req实例主动调用的,所以函数内部的this自然绑定到req对象上。 - 你可以直接把
this.responseText替换成req.responseText,两段代码的运行效果完全一致,也能验证这个指向逻辑。
注意避坑
如果这里你把onload的回调改成箭头函数,那这个this的指向就会发生变化:箭头函数不会绑定自己的this,会继承外层作用域的this,此时就不能用this拿到req实例了。
内容的提问来源于stack exchange,提问作者Ryan
相关产品推荐
相关产品推荐

