龙空技术网

为什么Vue根实例data是一个对象,而组件中data必须是一个函数?

can2014ky 598

前言:

此刻我们对“vue的实例对象”都比较关心,各位老铁们都需要了解一些“vue的实例对象”的相关知识。那么小编也在网络上网罗了一些对于“vue的实例对象””的相关内容,希望小伙伴们能喜欢,我们快快来了解一下吧!

看到下面官网的截图,会不会也有本文题目一样的迷惑和疑问?

官网截图

分析如下:

1)为什么根实例的data是一个对象?

答:new Vue()中只有一个data属性,共用该data。

2)为什么组件中的data必须是一个函数?

答:

2.1)因为如果data是一个对象,对象是引用类型,那复用的所有组件实例都会共享这些数据,就会导致修改一个组件实例上的数据,其他复用该组件的实例上对应的数据也会被修改。

2.2)如果data是一个函数,函数虽然也是引用类型,但是函数是有作用域的,函数内的变量不能被外部访问到,这样每个组件实例都会有个独立的拷贝同时又因为函数作用域的限制修改自己的数据时其他组件实例的数据是不会受到影响的

总结:

对象是引用类型,且没有作用域,会导致一改全改;

函数是引用类型,但它有作用域,不会彼此受牵连。

标签: #vue的实例对象