1)为什么根实例的data是一个对象?
答:new Vue()中只有一个data属性,共用该data。
2)为什么组件中的data必须是一个函数?
答:
2.1)因为如果data是一个对象,对象是引用类型,那复用的所有组件实例都会共享这些数据,就会导致修改一个组件实例上的数据,其他复用该组件的实例上对应的数据也会被修改。
2.2)如果data是一个函数,函数虽然也是引用类型,但是函数是有作用域的,函数内的变量不能被外部访问到,这样每个组件实例都会有个独立的拷贝同时又因为函数作用域的限制修改自己的数据时其他组件实例的数据是不会受到影响的
总结:
对象是引用类型,且没有作用域,会导致一改全改;
函数是引用类型,但它有作用域,不会彼此受牵连。