美文网首页
vue组件中的data不是一个对象而是一个函数

vue组件中的data不是一个对象而是一个函数

作者: 魅眼ALong | 来源:发表于2020-04-24 16:06 被阅读0次

如果两个实例引用同一个对象,当其中一个实例的属性发生改变时,另一个实例属性也随之改变,只有当两个实例拥有自己的作用域时,才不会相互干扰。

而函数具有作用域,为了不让所有的实例共享引用同一个数据对象,data必须以函数的形式存在,不可以是对象。
这样每次复用组件的时候,都会返回一份新的data,相当于每个组件实例都有自己私有的数据空间,它们只负责各自维护的数据,不会造成混乱。

function Box(){

        }
        Box.prototype.data={
            msg:"aaa"
        };
        var b1=new Box();
        var b2=new Box();
        b1.data.msg="bbb";//--------------这里修改一个实例的属性,会造成另一个实例的属性也跟着修改了
        console.log(b1.data.msg);//------bbb
        console.log(b2.data.msg);//------bbb
function Box(){
            this.data=this.data();
        }
        Box.prototype.data=function(){
            return{
                msg:"aaa"
            }
        };
        var b1=new Box();
        var b2=new Box();
        b1.data.msg="bbb";//-----------------如果是函数的形式去定义的属性,这样它们有自己的作用域,在修改的时候不会影响到别人
        console.log(b1.data.msg);//----bbb
        console.log(b2.data.msg);//----aaa

相关文章

  • vue 中的 data 为什么是函数?

    new Vue() 实例中,data可以是直接是一个对象,为什么在vue组件中,data必须是一个函数呢?因为组件...

  • Vue中的props理解

    Vue组件 Vue实例中的data属性是一个对象,然而组件中的data属性是一个函数。这是因为一个组件可以在同一个...

  • vue题库

    为什么vue组件中data必须是一个函数? 组件是可复用的,当复用组件时,由于数据对象指向的是同一个data对象,...

  • vue组件data为什么必须是函数?

    首先看个例子 在new vue()中,data可以直接是一个对象,为什么在vue组件中,data必须是一个函数呢?...

  • vue组件data为什么必须是函数

    首先看个例子 在new vue()中,data可以直接是一个对象,为什么在vue组件中,data必须是一个函数呢?...

  • Vue前端面试2021-018

    1、为什么组件中的data是一个函数? Vue中的组件是要被重复使用的,如果data只是一个对象,多个复用的组件他...

  • vue细节笔记

    组件中的 data 必须是一个函数,然后 return 一个对象,而 new Vue 实例里,data 可以直接是...

  • Vue组件data必须是函数

    Vue组件data必须是函数 一、组件data() 函数 定义一个组件 注册组件Vue.component('cp...

  • vue初级面试题

    1.在vue中,为什么 data必须是一个工厂函数而不能是一个对象。 在组件的复用中,如果data是一个对象的话,...

  • 为什么Vue的data属性是一个函数而不是一个对象?

    一、实例和组件定义data的区别 vue实例的时候定义data属性既可以是一个对象,也可以是一个函数 组件中定义d...

网友评论

      本文标题:vue组件中的data不是一个对象而是一个函数

      本文链接:https://www.haomeiwen.com/subject/guvfwhtx.html