为什么在组件内部data是一个函数而不是一个对象?
因为在组件复用的时候会重新生成一个对象,而data是一个对象的话(因为对象是引用数据类型),data数据会被复用;而当data是一个函数的时候每次调用的时候就会返回一个新的data对象。
vue中的组件是可以复用的(也就说是可以共享的),但组件中的data数据是私有的,为了防止data数据复用,将其定义为函数,避免组件与组件之间共享一份data数据。
如果组件中的data数据以对象的形式表示的话,各个组件中的实例之间就会共用一份data数据,就会导致一个组件上的数据发生改变时,其他组件上的数据也会发生改变。
如果组件中的data数据是一个函数并以函数返回值的形式定义,那么每复用一次组件时就会返回一份新的data数据,相当于给每个组件实例创建了一个私有的数据空间,每个组件实例都有自己的作用域并且相互独立,各自维护各自的数据互不影响。