美文网首页vue
vue组件data为什么必须是函数

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

作者: world_7735 | 来源:发表于2019-01-05 14:40 被阅读28次

首先看个例子

new  Vue({
    el: '#app',
    template: `<div>{{demo}}</div>`,
    data: {
        demo: 123
    }
})

在new vue()中,data可以直接是一个对象,为什么在vue组件中,data必须是一个函数呢?
我们大致可以通过js原型链来对比下:

var Component = function() {};
Component.prototype.data = {
    demo: 123
}
var component1 = new Component();
var component2 = new Component();
component1.data.demo = 456;
console.log(component2.data.demo); // 456

从上面可以看出,两个实例都引用同一个对象,其中一个改变的时候,另一个也发生改变。
每一个vue组件都是一个vue实例,通过new Vue()实例化,引用同一个对象,如果data直接是一个对象的话,那么一旦修改其中一个组件的数据,其他组件相同数据就会被改变。
而data是函数的话,每个vue组件的data都因为函数有了自己的作用域,互不干扰。

相关文章

  • Vue组件data必须是函数

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

  • 9道vue面试题

    2.VUE组件data为什么必须是函数 答:Vue组件可能存在多个实例,如果使用对象形式定义data,则会导致它们...

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

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

  • 微信小程序和vue的区别

    数据类型 vue组件中data必须是函数 data(){return{}},new Vue中的选项可以是函数也可以...

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

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

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

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

  • vue-5

    组件(可复用的vue实例) 注册组件必须在Vue实例化之前全局组件(跨vue实例)组件的data选项必须是一个函数...

  • vue题库

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

  • Vue-2

    组件模板的抽离写法 为什么组件data必须是函数

  • vue 组件中的data为什么是一个函数

    组件中 data 为什么是一个函数? 为什么组件中的 data 必须是一个函数,然后 return 一个对象,而 ...

网友评论

    本文标题:vue组件data为什么必须是函数

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