# data 是函数的原因

# 为什么组件中的 data 必须是一个函数,然后 return 一个对象,而 new Vue 实例里,data 可以直接是一个对象?

  • 组件大多用来复用,且 JS 里对象时应用关系,如果组件中data是一个对象,那么作用域没有隔离,子组件中的data的值会 互相影响

  • 如果data是函数,那么每个实例可以维护一份被返回对象的独立的拷贝,组件实例之间 data 不会相互影响

  • new Vue 的实例,是不会被复用的,因此不存在这个问题