jQuery ajax中this的指向问题

在jQuery ajax中,data属性下的this指向的为什么会是我的vue实例?如下:

//vue中的数据
data(){

  return{
     name:'test',
     age:18,
  }
}

//ajax
methods:{
  getData(){
    $.ajax({
     url:'test.php',
     type:'post',
     data:{
       'name':this.name,
       'age':this.age,
       }
     })
  }
}

按照我的理解this应该指向的是jQuery这个对象才对,因为是jQuery里的ajax方法调用了这个属性,那么this应该指向的就是jQuery,为什么这里指向的还是vue这个实例呢?

阅读 4k
1 个回答

因为this是写在$.ajax()括号里的,这里data只是相当于一个传进来的对象参数(这里的data格式是一个对象),而并没有去调用这个方法,是我理解错了。
而后面的回调函数中的this才指向ajax中的一个自带的调用他的对象而不是其他。
回调函数的this指向的是jQuery的AJAX配置对象ajaxSettings。在jQuery内部是用s.success代替传入的回调函数去执行的,而success的调用对象就是s,即ajaxSettings对象的缩写。也要注意回调函数中的${this}指向的也不是这个jQuery而同样是上面那个对象s。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进