Vue.js 深入理解getter/setter:简明教程
83 浏览量
更新于2023-05-09
收藏 78KB PDF 举报
"Vue框架中的getter和setter是实现响应式系统的关键部分,它们使得数据的读取和修改能够触发视图的更新。当Vue实例化时,它会将data对象中的所有属性转化为getter和setter,这是通过JavaScript的Object.defineProperty方法实现的,该方法在ES5中引入且无法被polyfill。由于这个原因,Vue不支持IE8及以下版本的浏览器。
在Vue实例创建过程中,data对象的每一个属性会被挂载到vm._data上。例如,如果data对象包含一个msg属性,那么可以通过vm._data.msg来访问它。然而,Vue提供了一种更加直观的访问方式,即通过vm.msg来获取或修改数据。这是通过一个名为proxy的函数实现的,它创建了一个代理,使得对vm[key]的访问实际上是在访问vm._data[key]。
proxy函数的工作原理是定义了两个方法:proxyGetter和proxySetter。proxyGetter作为getter,当访问vm.msg时,它会返回vm._data.msg的值。而proxySetter作为setter,当尝试设置vm.msg的新值时,它会更新vm._data.msg的值。这两个方法都被定义在一个共享的属性描述符(sharedPropertyDefinition)中,然后使用Object.defineProperty将这个描述符应用到target对象的key属性上。
此外,Vue还提供了vm.$data属性,它与vm._data相同,但对外公开,用于在组件外部访问和修改数据。虽然它们在内部是同一个对象,但在某些情况下,如在计算属性或侦听器中,可能更倾向于使用vm.$data,因为它更符合API的语义。
Vue中的getter和setter是响应式系统的核心,它们允许Vue跟踪数据变化,从而实现数据驱动视图的更新。通过proxy函数和Object.defineProperty,Vue成功地创建了一个用户友好的接口,使得开发者可以方便地操作数据,同时享受到自动化的视图同步。"
2020-10-20 上传
2023-04-11 上传
2023-03-30 上传
2021-04-29 上传
2023-04-02 上传
2023-04-11 上传
2023-08-21 上传
2023-08-21 上传
2023-06-03 上传
weixin_38704485
- 粉丝: 8
- 资源: 928
最新资源
- 使用PlayStation控制器控制机器人-项目开发
- NewLife:GO 语言实现的轻量级博客系统
- kaitlinbennett.github.io
- 数字观测器_考虑有限字长效益
- 简历-求职简历-word-文件-简历模版免费分享-应届生-高颜值简历模版-个人简历模版-简约大气-大学生在校生-求职-实习
- C语言求孪生数 矩阵替换A 扩展字符A
- (正文)学生的学习态度在初高中物理课程衔接中的影响.zip
- iOS企业级Swift项目实战之我的云音乐(第一部分)
- 美国马里兰大学电池测试数据5:CS2+CX22 (1)
- 使用短信来控制LED的颜色-项目开发
- 简历-求职简历-word-文件-简历模版免费分享-应届生-高颜值简历模版-个人简历模版-简约大气-大学生在校生-求职-实习
- sql_dust:简单的。 简单的。 强大的。 使用神奇的Elixir SQL尘土生成(复杂的)SQL查询
- React堆课程
- python 零基础学习篇-资料.zip
- 通俗易懂的Go语言教程第2季(含配套资料)
- C++中缀表达式转后缀表达式源码集