当前位置: 首页 > news >正文

Vue回调函数中的this

2025/4/25

向 

示例

一个例子——计数器,通过this来操作数据。

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script><title>回调函数中的this</title>
</head>
<body><div id="app"><h1>{{msg}}</h1><h1>计数器:{{count}}</h1><button @click="addOne">加一</button></div><script>new Vue({el : "#app",data:{msg: "回调函数中的this",count:0},methods:{addOne(){this.count++}}})</script></body>
</html>

Vue(vm) 和 this的关系

methods:{addOne(){this.count++console.log(this === vm)}
}

所以不难发现。其实vm(vue实例对象) 和this是一个东西,所以其实我们也可以使用

vm.count++

来实现,但是一般更加常使用this。this就是vm,vm可以访问count通过数据代理。

箭头函数

<body><div id="app"><h1>{{msg}}</h1><h1>计数器:{{count}}</h1><button @click="addOne1">加一1</button><button @click="addOne2">加一2</button></div><script>const vm = new Vue({el : "#app",data:{msg: "回调函数中的this",count:0},methods:{addOne1(){this.count++},addOne2:()=>{this.count++}}})</script></body>

当使用箭头函数之后,计数器失效。因为箭头函数中没有this,箭头函数中的this是从父级作用域当中继承过来的。对于当前程序来说,父级作用域是全局作用域:window。

普通函数的this指向取决于函数的调用方式。当函数作为对象的方法调用时,this指向该对象;在全局作用域中调用函数,this指向全局对象。addOne1是一个普通函数,能够根据调用方式来决定this的指向,上述的调用是作为Vue实例对象的方法调用,所以this指向该Vue实例

但箭头函数不具备自己独立的this绑定,它的this是在定义时从父级作用域继承而来的,且不会被调用方式影响。addOne2 箭头函数定义于 methods 对象里,不过 methods 对象本身并非一个函数作用域,所以 addOne2 的父级作用域就是全局作用域。而全局作用域中并没有属性count。

所以在methods中尽量的不使用箭头函数,我们常需要在回调函数中使用到this和vm实例。

http://www.xdnf.cn/news/149185.html

相关文章:

  • 【CF】Day43——Codeforces Round 906 (Div. 2) E1
  • Libconfig 修改配置文件里的某个节点
  • Linux 系统用户管理与权限掌控:从基础到精通
  • 《深入理解计算机系统》阅读笔记之第三章 程序的机器级表示
  • Python判断语句-语法:if,if else,if elif else,嵌套,if else语句扁平式写法,案例
  • LatentSync - 字节联合北交大开源的端到端唇形同步框架-附整合包
  • Cannot read properties of null (reading ‘classList‘)
  • 人工智能的100个关键词系统学习计划
  • Trae 实测:AI 助力前端开发,替代工具还远吗?
  • mysql 导入很慢,如何解决
  • 猿人学题库13题—动态css字体加密 记录
  • JavaScript性能优化实战(5):数据结构与算法性能优化
  • Python爬取天猫畅销榜接口的详细教程
  • Python基础语法:字符串格式化(占位拼接,精度控制,format()函数,快速格式化,表达式格式化)
  • dstream
  • 《深入浅出ProtoBuf:从环境搭建到高效数据序列化》​
  • python基础-requests结合AI实现自动化数据抓取
  • 文档编辑:reStructuredText全面使用指南 — 第三部分 进阶特性
  • 第四章 安全审计
  • HMI与组态,自动化的“灵珠”和“魔丸”
  • 【FastJSON】的parse与parseObject
  • Huffman(哈夫曼)解/压缩算法实现
  • 【多目标进化算法】常见多目标进化算法一览
  • 持久登录的存储
  • 在统信桌面操作系统上修改启动器中软件名称
  • Semantic Kernel也能充当MCP Client
  • PMIC PCA9450 硬件原理全解析:为 i.MX 8M 平台供电的“大脑”
  • 【EDA】Floorplanning(布局规划)
  • 基于自然语言处理的文本生成模型设计
  • Canvas入门教程!!【Canvas篇二】