在Vue中,为什么 data 是一个函数?
先来了解一下对象Object和函数Function的区别:
在JS中,对象是引用数据类型,没有作用域,如果两个实例引用同一个对象,当修改其中一个属性值时,另一个实例也会跟着改变
函数可以构成一个独立的作用域,可以有属于自己的this指向
export default {
data(){
return {}
}
}
总结
在vue中,组件是会被复用的,而data如果是对象的话,那么变量的作用域都会是同一个,子组件data中的属性值就会互相影响,所以为了保证组件实例不被互相影响,每个实例可以维护一份属于自己的独立对象,所以data是一个函数。