匿名函数和箭头函数中this的上下文

.then(function(response) {
    // handle success
    console.log(response.data.data);
    this.posts = response.data.data;
 })

上面这段代码报错:Cannot set property ‘posts’ of undefined at eval…
这是很常见的错误,关键在this的作用域,如果我们改成

// 改成这样-------
.then(response=> {       
  console.log(response.data.data);
  this.posts = response.data.data;
          
// 或者这样-------
let that = this
.then(function(response) {
  // handle success
  console.log(response.data.data);
  that.posts = response.data.data;
})   

把匿名函数改成箭头函数就可以,或先在匿名函数之外,声明变量that=this

虽然箭头函数是匿名函数的另一种写法,但是函数中this的指并不不同。
一般来说,匿名函数中this的上下文一般是window或者undefined(取决于是否处于严格模式之下);箭头函数没有单独的this值,它的this与声明时所在的上下文相同。

在这个例子中,可以用console.log(this)查看this的值
匿名函数的this打印出来是undefined
箭头函数的this打印出来是VueComponent

当然我们还可以显示地指定任何对象作为函数的上下文,这就是另一个要学习的话题了:apply和call

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

immocha

人生得意须尽欢

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值