Vue中this的指向问题

发布于 2022-09-11 18:35:55 字数 643 浏览 15 评论 0

在methods中的方法并没有使用箭头函数,但this指向undefined,并没有指向vue实例。代码如下:

<template>
  <div>
    <a href="javascript:;" @click="checkOrder(record._id, true)">通过</a>
  </div>
</template>
methods: {
  checkOrder(orderId, check) {
    // 使用axios请求数据
    this.$http.post(api.order.check, { orderId, check })
      .then(res => {
        console.log(this) // undefined
        // 为什么这里this为undefined,而不是vue实例?
      }).catch(err => {
        this.$message.error(err.message)
      })
  }
}

问题:为什么axios请求数据后的then中this指向undefined而不是vue实例?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

赠意 2022-09-18 18:35:56

首先你是用了箭头函数!参考你第二段代码的第4行
其次:

在JS中,箭头函数并不是简单的function(){}匿名函数的简写语法糖,实际上,箭头函数和匿名函数有个明显的区别:箭头函数内部的this是词法作用域,在编写函数时就已经确定了,由上下文确定。而匿名函数的this指向运行时实际调用该方法的对象,无法在编写函数时确定。
不可以当做构造函数,也就是说,不可以使用 new 命令,否则会抛出错误。
this、arguments、caller等对象在函数体内都不存在。
不可以使用 yield 命令,因此箭头函数不能用作 Generator 函数。
箭头函数除了传入的参数之外,其它的对象都没有!在箭头函数引用了this、arguments或者参数之外的变量,那它们一定不是箭头函数本身包含的,而是从父级作用域继承的。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文