Vue组件里面data必须是个函数

**首页我们先了解一个原形和原型链,每个js对象和js方法都有一个原形,js对象的是隐式原形 proto,而方法中的是显示原形prototype,下面举个例子:

export default {name:'component',data: {a: 1,b: 2},methods:{}
}
// 其实底层是
component._proto_.data={a:1,b:2
}
//而var obj = {}底层是var obj = new Object()
//所以component._proto_._proto_,第一个是继承data,第二个继承Object,data不只是有data属性还包含Object属性

**因为咱们封装的组件是可复用的,如果一个地方用到这个组件,其他地方也用这个组件,那样大家的继承都是一样的,只要一个地方的组件属性修改了,其他地方也会被修改,这个肯定不是我们想要的,也是很恐怖的,那用函数之后会是什么样的那,看下面一个例子:

export default {name:'component',data: function () {return {a: 1,b: 2}},methods:{}
}
//其实底层是这样的
var component=function(){this.data=this.data();//每次调用这个函数生成新的js对象
}
component.prototype.data=function(){return {a:1,b:2,}
}

**这个才是我们想要的效果,所以组件的data必须要用函数

为什么Vue组件里面data必须是个函数相关推荐

  1. vue中的data为什么是一个函数?起到什么作用?

    前言 在学习vue的时候,我们一直在思考的一件事: 组件的data数据为什么必须要以函数返回的形式,为什么不是简单的对象形式呢? 一.data为什么是一个函数 面试回答: 如果data是一个函数的话, ...

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

    组件是可复用的vue实例,一个组件被创建好之后,就可能被用在各个地方,而组件不管被复用了多少次,组件中的data数据都应该是相互隔离,互不影响的,基于这一理念,组件每复用一次,data数据就应该被复制 ...

  3. Vue组件中data的使用方式

    全局组件中的data使用方式: js中写法: Vue.component("mycom1",{template:'<h1>这是全局组件--{{msg}}</h1& ...

  4. 组件中data为什么是个函数

    总结: 1.vue中组件是用来复用,为了防止data复用,将它定义成一个函数. 2.当我们将组件中的data写成一个函数,数据是以函数返回值形式定义的,这样每复用一次data,都会返回一份新的data ...

  5. Vue组件的生命周期以及钩子函数的作用

    什么叫做生命周期 一个组件从创建到销毁的过程叫做组件生命周期. Vue在生命周期中提供了一些函数可以在其内部实现一些业务逻辑并且这些函数会在一些特定的场合下执行. 组件的生命周期钩子函数大致可以分为三 ...

  6. java socket中属性详解_前端开发:关于Vue组件中的data属性值是函数而不是对象的详解...

    最近在搞关于前端开发的基础知识归纳,发现了不少经典知识点,那么本篇博文就来分享一个经典的知识点:Vue组件中的data属性值为什么是函数而不是对象.首先来了解一下Vue组件的使用理念:在Vue组件使用 ...

  7. Vue 组件 data为什么是函数

    在创建或注册模板的时候,传入一个data属性作为用来绑定的数据.但是在组件中,data必须是一个函数,而不能直接把一个对象赋值给它. Vue.component('my-component', {te ...

  8. 为什呢vue组件中的data必须是函数?

    类比引用数据类型 Object是引用数据类型,如果不用function 返回,每个组件的data 都是内存的同一个地址,一个数据改变了其他也改变了; 关于JS中的数据类型:https://blog.c ...

  9. 灵活的Vue组件——原来这么简单

    本篇学习目标 能够理解vue组件概念和作用 能够掌握封装组件能力 能够使用组件之间通信 能够完成todo案例 1. vue组件 1.0_为什么用组件 以前做过一个折叠面板 需求: 现在想要多个收起展开 ...

最新文章

  1. 震后首游都江堰感怀(二)
  2. Javascript深入浅出
  3. C语言 · 约数个数
  4. CSerialPort多线程串口编程工具详解
  5. 提高 webpack 构建 Vue 项目的速度
  6. apollo 配置中心_apollo-1:apollo配置中心单机模拟分布式部署
  7. .NET开源工具类库:Masuit.Tools
  8. java hive demo_java 操作hive通过jdbc
  9. cass怎么把块打散命令_分解cass高程点即属性块
  10. java 测试排序_java排序的几种方法 - 善待自己的个人空间 - 51Testing软件测试网 51Testing软件测试网-软件测试人的精神家园...
  11. PrepareStatement对象(新增、删除、更新、查询、防止SQL注入)
  12. 你写的代码要被 GitHub 存在北极啦!期限是 1000 年!
  13. 【CF1312D】Count the Arrays(计数)
  14. HCIP-Cloud Service Solutions Architect
  15. WORD文档怎么转换成EXCEL
  16. Ubuntu安装Microsoft Windows Fonts微软字体库
  17. 电影:《三少爷的剑》票房折戟,武侠电影还能翻盘吗?
  18. 考研复试数据库原理课后习题(七)——数据库设计
  19. wuli大excel
  20. php表格整体怎么移动,超级表格新版移动端操作指南

热门文章

  1. npm internal/modules/cjs/loader.js:883 throw err; ^ Error: Cannot find module ‘code-point-at‘ Requir
  2. 01-Spring_快速入门
  3. 源码深度解析系列之 Spring IOC
  4. java开发系统内核:放大招!为系统开发星球大战游戏程序
  5. MBA-day25 最值问题-应用题
  6. 哈工大软件构造 复习
  7. 宠物王国四java正版_宠物王国单机版正版
  8. 免费正版 IntelliJ IDEA license 详细指南
  9. ai描边工具怎么打开_ai轮廓化描边在哪 轮廓化描边快捷键,需要技巧
  10. springboot学习(六十七) springboot项目通过gradle-docker-plugin插件构建为doker镜像并推送至镜像私服