vue组件的data为什么是函数?
vue组件的data为什么是函数?
在JS中,实例是通过构造函数创建的,每个构造函数可以new出多个实例,每个实例都会继承原型上的方法和属性。
在vue中,一个vue组件就是一个实例,当一个组件被复用多次,就会创建多个实例,如果data是对象,那么被多次复用的这个组件,在某一处改变了data数据,就会影响到其他处复用这个组件的地方,因为对象的引用数据类型,是对于内存地址的引用,牵一发而动全身,而如果data是一个函数的话,那么每次创建一个新的实例之后,就会调用这个新的data函数,返回一个新的对象,也就是给每一个data数据,定义了一个新的内存地址,自己维护自己的数据,所以为了保证每个组件data的独立性,或者说是组件的可复用性,data就必须是一个函数。