一个组件被复用多次的话,也就会创建多个实例。本质上,这些实例用的都是同一个构造函数。
如果data是对象的话,对象属于引用类型,所有实例都是引用同一个data对象,若data发生改变,会影响到所有创建好的实例。
所以为了保证组件不同的实例之间data不冲突,data必须是一个函数。当组件被复用创建一个实例时,会在堆上重新申请一块内存,用于保存拷贝好的data,且在栈上会保存一个指向该新创建实例的指针,那么每个实例可以维护一份被返回对象的独立的拷贝,组件实例之间的 data 属性值不会互相影响。