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不是唯一的,那么很有可能数据混乱。---个人理解,非专家型理解。

你可能感兴趣的:(vue data 为什么要用return?源码分析)