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

methods的实现原理

一、直观的感受methods的使用

首先直观的感受methods方法的使用,同样以计数器为例,

<!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>methods的实现原理</title>
</head>
<body><div id="app"><h1>{{msg}}</h1><h1>计数器:{{count}}</h1><button @click="addOne">加一</button></div><script>new Vue({el : "#app",data:{msg: "methods的实现原理",count:0},methods:{addOne(){this.count++}}})</script></body>
</html>

不难看出来,其methods中的方法是用来处理事件执行相应逻辑的代码 。对于上述代码来说,其addOne()方法就是来处理的相应逻辑——实现不断加1的功能。在页面上点击按钮触addOne()方法,它就会执行 this.count++,让 count 增加。

二、🧠 methods 的实现原理是什么?

Vue 实例初始化时到底发生了什么?—— 挂载方法

当我写下如下代码的时候 

new Vue({el : "#app",data:{msg: "回调函数中的this",count:0},methods:{addOne(){this.count++}}
})

Vue 会进行一系列的初始化操作。其中的一部分是初始化 methods —— Vue 会把我们写在methods 中的函数挂载到 Vue 实例(this)上

📦 举个比喻:你写了一堆工具(函数)放在工具箱(methods),Vue 会把它们一一拿出来,贴在你的“Vue 小人”身上(Vue 实例),这样你就能用 this.someMethod() 来调用。

那和通过this之间访问data有什么区别呢?是否也是通过数据代理机制来实现的呢?

三、和 data 的区别?

this.count访问count的时候是通过数据代理机制的getter方法来实现的,而通过Vue实例来访问methods中定义的方法使用的却不是数据代理机制,是通过 Vue 在初始化阶段,手动把 methods 中的函数“挂载”到 Vue 实例(vm)上实现的。

绑定的过程大致如下所示。

function initMethods(vm, methods) {for (let key in methods) {const method = methods[key]// 只接受函数,其他类型会报错if (typeof method !== 'function') {console.warn(`${key} is not a function`)continue}// 把方法“复制”到 Vue 实例上,并绑定 thisvm[key] = method.bind(vm)}
}

 

 

 

 

相关文章:

  • Chainlink:连接 Web2 与 Web3 的去中心化桥梁
  • iOS 使用CocoaPods 添加Alamofire 提示错误的问题
  • 【Docker 新手入门指南】第十四章:Docker常用命令
  • HTML5实现简洁的端午节节日网站源码
  • 电子电路:深入了解4013D触发器的机制和原理
  • 设计模式之简单工厂模式
  • OSG编译wasm尝试
  • LVS-NAT 负载均衡群集
  • PHP7内核剖析 学习笔记 第九章 PHP基础语法的实现
  • 51. N-Queens
  • 【达梦】达梦数据库使用TypeHandler读取数据库时,将字段中的数据读取为数组
  • 用 Python 模拟雪花飘落效果
  • 【从零开始学习QT】快捷键、帮助文档、Qt窗口坐标体系
  • 集成均衡功能电池保护芯片在大功率移动电源的应用,创芯微CM1341-DAT、杰华特JW3312、赛微微电CW1244、中颖SH366006
  • 25平航杯复现
  • java队列
  • 通义灵码2.5——基于MCP打造我的12306火车票智能查询小助手
  • 人工智能在智能城市中的创新应用与未来趋势
  • 67常用控件_QTreeWidget的使用
  • 2024 吉林 CCPC
  • 长春网站建设有什么/域名注册新网
  • 免费做司考真题的网站/近期国际热点大事件
  • 如何在php网站上插入站长统计/google推广工具
  • 开发个网站需要多少钱/长沙seo推广
  • 做现金贷网站的公司/百度热议排名软件
  • 网站开通宣传怎么写/seo外链优化方法