this.$axios.get("./data.json").then(function(result){ console.log(this) //undefined })
关于axios回调函数this指向的问题,网上的大部分文章只是推荐用箭头函数取代普通函数解决,但是却没有解释为什么this会指向undefine,在我的理解里应该是指向window,因为这个匿名回调函数的调用者必然是window对象,但是结果却是undefined,感觉我好不容易建立起的对this指向的认识又崩溃了。。。-
参考GPT和自己的思路:
首先,这个问题的原因是因为在普通函数中,this的指向是在运行时决定的,而不是在定义时决定的。在这个具体的例子中,this的指向并不是window,而是由JavaScript运行时决定的,这与axios的具体实现有关。
通常情况下,箭头函数会使用当前环境的this,而不会像普通函数那样重新定义。因此,使用箭头函数可以解决这个问题,你可以尝试将代码改写成如下形式:
1.
2. this.$axios.get("./data.json").then((result) => { console.log(this) })
这里使用了箭头函数来定义回调函数,这样this的指向就会是定义时的this,也就是当前对象的this,而不是undefine。
这是 js 的 prototype