Vue框架源代码解读(关键性代码)

vue框架源代码中关键性代码:


1. var data ; vm.$options.data;
注意:这是获取 data ,程序执行到这里的时候 vm 上还没有 data 属性。


2. data = vm._data = isfunction(data) ? getdata(data, vm) : data || {};
程序执行完这个三目运算符代码之后,vm 对象上多了一个 _data 这样的属性。
通过以上源码解读,可以得知 data 不一定是一个对象,也可以是一个函数。
代码含义:
如果data是函数,则调用 getdata(data,vm) 来获取 data.
如果data不是函数,则直接将 data 返回,给 data 变量。并且同时将 data 赋值给 vm._data 属性了。

程序执行到这里,为什么要给vm扩展一个 _data 属性呢?
data 属性,以"_"开始,足以说明,这个属性是人家 vue 框架底层需要访问的。
 


vm._data是啥?:vm._data是一个目标对象


vm.data 这个属性直接指向了底层真实的data对象。

通过 data 访问的对象是不会走数据代理机制的


通过 vm._data 方式获取对象的时候,是不会走 getter 和 setter 方法的。
注意:对于 vue 实例 vm 来说,不仅有 _data 这个属性,还有一个 $data 这个属性。


_data 是框架内部使用的,可以看做私有的。
$data这是vue框架对外公开的一个属性,是给我们程序员使用。

如果我们程序员不想走代理的方式读取 data ,想直接读取 data 当中的数据

可以通过 _data 和 $data 来访问。(建议使用 $data 这个属性)

该文章为笔记,教程为动力节点的老杜Vue视频教程,Vue2 Vue3实战精讲
视频链接:https://www.bilibili.com/video/BV17h41137i4?p=1&vd_source=2136c732ce8d5a3f412e2f7064285cb7

  • 10
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值