[面试题] Vue 中 data 为什么是一个函数而不是对象?

阅读 1.8k
1 个回答

主要是为了隔离组件状态。因为在JS中对象是引用类型的数据,如果不会一个函数而是一个对象,那么任意一个 Vue 组件修改了 Data 中的某个值,其它组件实例中的 Data 数据也会随之发生变化。

所以想要复用组件,那就必须使每个组件实例之间的 Data 数据相互隔离。这样就不能写成对象的格式,而是要写成函数返回值的形式。
在每次组件实例化的时候返回一个新的 Data,每个组件示例各自维护自己的 Data 数据,不去干扰其它组件的 Data 数据。

本文参与了SegmentFault 思否面试闯关挑战赛,欢迎正在阅读的你也加入。
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题