为什么data属性是函数而不是对象

189 阅读1分钟

前言

vue实例在定义data属性的时候,既可以是函数,也可以是对象,而在组件中定义data属性,就只能是函数,如果你在组件中定义data为对象,你会得到如下的报错信息:

    const one = new Vue({
      el:'#app',
      //对象格式
      data:{
        two: 'two'
      },
      // 函数格式
      data(){
        return {
          two: 'two'
        }

image.png 返回的data应该是一个函数在组件实例中

总结

  1. 根据实例对象data可以是函数,不会产生数据污染的情况
  2. 组件中的data写成一个函数,数据以函数返回值形式定义,这样每复用一次组件,就会返回一份新的data,相似于给每一个组件实例建立一个私有的数据空间,让各个组件实例维护各自的数据。而单纯的写成对象形式,就使得全部组件实例共用了一份data,就会形成一个变了全都会变的结果。函数