vue data 为什么要用return?源码分析

       看了很多文章,大多数都是copy别人的blog,然后放到自己的名下的,今天我要试一试,看具体机制是怎样运行的。

      首先给出结论,然后我们一步一步窥探。

      使用return包裹后数据中变量只在当前组件中生效,不会影响其他组件,保证数据的唯一性。

       于是,我故意写成了对象而不是方法返回的模式,看图:



有点扯淡,根本就不让这么写。

按照理解来说,按照function是可以拥有新的对象,但逻辑不是这个样子的,可能1.xx版本吧。至于会影响其他组件,个人认为export default {},这里是引用,如果相同有多个组件公用的是一个对象的话,data:{}才会有可能被污染,所以data(){return{}}这样每次调用data()才会每次生成新的对象,但这样的话methods:{},watch,computed这些又如何解释【所以可能要讲到export和module.export了】。这里不能确定,还待我看源码,测试之后给出最终结论。

结论,不让这么写,但应该有他的道理。

我在method上做了两个方法,然后在代码里面实现了下,结果不是export这个没关系。


两个相同的组件,修改一个方法,在另外一个组件没有改变,可以表面,不是export的问题,所以data return的问题,估计不是这个问题,除非method那里框架是进行了clone的。

随着后期的更多阅读,发现,其实是在Vue.mixin方法里面,有一个mergeOption的方法,在合并option的时候,或有策略模式,也就是strategy,这个strategy上有很多策略的方法,其中就有data,在合并父子的data数据时,如果不是function数据返回保证唯一,那么data可能就会混乱,因为多子级之间可能共用了一个父级的data,如果此时data不是唯一的,那么很有可能数据混乱。---个人理解,非专家型理解。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 任务: 1、早睡早起:23点前休息,起床6:20-6:50。 2、专业课学习开始,每科2页阅读。将这个习惯改为:每...
    大眼妹宝贝阅读 418评论 0 3
  • 出发:小美是一名新来的实习生。考研成功后,为打发研究生开学前的漫长时光,来到了厦门翔安一家上市公司的研究院检测部实...
    tongmiao阅读 300评论 0 1
  • --https://docs.oracle.com/javase/tutorial/java/annotations/
    Zihowe阅读 148评论 0 0
  • 今天上午,苏老师将昨天每位同学的复盘思维导图进行了一一点评,让每位同学都了解了自己学习过程中疏漏和不足的地方,并...
    aegean糖阅读 166评论 0 1