前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Vue 组件中的 data 为什么必须是函数

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

作者头像
Nian糕
修改2024-03-19 19:57:02
2.7K0
修改2024-03-19 19:57:02
举报
文章被收录于专栏:JavaScript高阶应用
Unsplash
Unsplash

new Vue() 中,data 是可以作为一个对象进行操作的,然而在 component 中,data 只能以函数的形式存在,不能直接将对象赋值给它

代码语言:javascript
复制
new Vue({
    el: '#app',
    data: {
        message: 'Love'
    },
    template: '<p>It’s great to love cakes.</p>'
})

Vue.comments('todo-item', {
    data: function(){
        return {
            message: 'Love'
        }
    },
    template: '<p>It’s great to love cakes.</p>'
})

这并非是 Vue 自身如此设计,而是跟 JavaScript 特性相关,我们来回顾下 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

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

代码语言:javascript
复制
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); 
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019.02.18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档