开发者社区> 问答> 正文

Vue 组件中 data 为什么必须是函数

Vue 组件中 data 为什么必须是函数

展开
收起
问问小秘 2019-11-22 15:37:11 551 0
1 条回答
写回答
取消 提交回答
  • 在 new Vue() 中,data 是可以作为一个对象进行操作的,然而在 component 中,data 只能以函数的形式存在,不能直接将对象赋值给它,这并非是 Vue 自身如此设计,而是跟 JavaScript 特性相关,我们来回顾下 JavaScript 的原型链

    var Component = function() {};
    Component.prototype.data = {
      message: "Love"
    };
    var component1 = new Component(),
      component2 = new Component();
    component1.data.message = "Peace";
    console.log(component2.data.message); // Peace
    

    以上两个实例都引用同一个对象,当其中一个实例属性改变时,另一个实例属性也随之改变,只有当两个实例拥有自己的作用域时,才不会互相干扰 !!!!!这句是重点!!!!!

    var Component = function() {
      this.data = this.data();
    };
    Component.prototype.data = function() {
      return {
        message: "Love"
      };
    };
    var component1 = new Component(),
      component2 = new Component();
    component1.data.message = "Peace";
    console.log(component2.data.message); // Love
    
    2019-11-22 15:38:28
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Vue.js 在前端服务化上的探索与实践 立即下载
利用编译将 Vue 组件转成 React 组件 立即下载
Vue.js在前端服务化上的实践与探索 立即下载

相关实验场景

更多