关于vm和vc,vm为Vue的实例对象,vc为VueComponent的是对象。

一、vm

1、Vue的实例对象,以后简称vm。

(1) vm的隐式原型属性指向Vue的原型对象。

(2) VueComponent的原型对象的隐式原型属性指向Vue的原型对象。

好像不太好描述,只可意会不可言传,atguigu张天禹老师牛批!

二、vc

1、组件本质:

组件其实是一个名为VueComponent的构造函数,且不是程序员定义的,是Vue.extend自动生成的。

每写一个组件Vue会通过Vue.extend生成一个全新的VueComponent,写一个school组件,新生成一个VueComponent,当我们再写一个student组件时,又会重新生成一个全新的VueComponent。注意:这里只是针对于非单文件组件。

2、Vue解析时会帮我们创建school组件的实例对象

我们只需要写<school></school>,,
即Vue帮我们执行的:new VueComponent(options)。

3、特别注意

每次调用Vue.extend,返回的都是一个全新的VueComponent!!!!

//定义school组件
const school = Vue.extend({name: 'school',data(){name:'ycu',address:'学府路576号',}, methods:{}
})

在非单文件组件中,组件可以定义多个

4、关于this指向

1.组件配置中:

data函数、methods中的函数、watch中的函数、computed中的函数 它们的this均是VueComponent实例对象(也就是天禹老师课堂上的vc,也可称之为组件实例对象)。

(1):VueComponent的实例对象,我们暂且记为vc。


(2):Vue的实例对象 vm

2.new Vue(options)配置中:

data函数、methods中的函数、watch中的函数、computed中的函数 它们的this均是Vue实例对象。

5、vc 与 vm 的区别:

vm和vc在某种程度上确实有很多相像之处,但又有着本质的区别,vc差不多像是vm的小弟,可以理解为类似生活中的一对双胞胎,一个稍微早出生几分钟的是大哥,也就是vm,另外一个就是小弟vc,虽然会很像,但是还是有区别的。

总体上来说,vm身上有的,vc基本也有。

data函数、methods中的函数、watch中的函数、computed中的函数在vm和vc里边都有,生命周期也都是一样的,以及相同的数据代理模式。

vc有的vm都有,vm可以通过el决定为哪一个容器服务,但是vc是没有 el 的!且 vc 的data要写成函数式,在vm中的data写成对象或者函数都行

6、Vue和VueComponent的内置关系

VueComponent.prototype.proto === Vue.prototype (这里的proto前后都是有__的,编辑器误以为是加粗的标识了)

即构造函数的显示原型属性 === 实例对象的隐式原型属性

先摆上一张天禹老师的d图

Vue中的vm和VueComponent的实例对象相关推荐

  1. vue 给标签添加data属性_在Vue中获取自定义属性方法:data-id的实例

    获取自定义属性的方法: 第一步:首先在标签上绑定上@click="getDateId(item.id)",并将属性值传到绑定的事件里面 第二步:在标签上继续绑定:date-id = ...

  2. “约见”面试官系列之常见面试题第二十八篇之vue中的混合(minix)实例理解

    minix 是个什么东西, 就是混合,把你混合给我 浅显表述就是 你说 : '我叫李四', 我说 : '我叫张三', 然后把你 混合给我, 就成了 我说 : '我叫张三我叫李四', 所有解说都在例子里 ...

  3. 原型共享数据 原型简单语法 原型中方法是可以相互访问 实例对象属性方法层层搜索

    利用原型共享数据 <!DOCTYPE html> <html lang="en"> <head><meta charset="U ...

  4. vue中细枝末节的知识点总结

    JS 文件中访问vuex,操控vuex 由于在main.js文件中,vuex是挂载在window.vm上的 所以vue项目中的js文件访问vuex的写法 window.vm.$store.state. ...

  5. 【Vue】class style:Vue中的两种样式处理方法

    class属性 1.基本的class使用 <!DOCTYPE html> <html lang="en"> <head><meta cha ...

  6. vue中$router以及$route的使用

    路由基本概念 route,它是一条路由. { path: '/home', component: Home } routes,是一组路由. const routes = [{ path: '/home ...

  7. javascript中实例对象和构造函数关系、原型语法、原型链、call实现继承、apply调用函数、bind拷贝函数、拷贝继承、class类、super、严格模式、高阶函数、闭包、递归、es6简介

    实例对象和构造函数的关系及原型: 实例对象是通过构造函数创建出来的,实例对象的构造器constructor就是指向构造函数的:每个实例对象中的同一方法的指向是各不相同的,但是其属性值相同的属性可以相同 ...

  8. python-面向对向-实例方法的继承-多继承父类中的super与子类实例对象的关系

    初始代码 class Father:def run(self):print('father de run')def one(self):print('father de one')class Moth ...

  9. AbstractBeanFactory 生产Bean 实例对象

    AbstractBeanFactory 类中生产Bean 实例对象的主要源码如下: //Bean工厂生产Bean实例对象 protected Object getObjectFromFactoryBe ...

最新文章

  1. Java学习总结:54(集合输出)
  2. LeetCode Number of Digit One(计算1的个数)
  3. VC++文件编程操作实例
  4. 分页原理+软件架构师
  5. [FPGA]基于FPGA的数字跑表
  6. jQuery全屏滚动插件fullPage.js
  7. python测试系列教程 —— 调试日志logging
  8. 什么是数据治理的方法论
  9. zabbix修改和查看登录密码
  10. java.lang.ClassNotFoundException: net.sf.json.JSONObject
  11. python 前端开发_python和前端开发怎么抉择?
  12. ESXI7.0与6.7官网下载地址
  13. 12个思维导图工具,像数据科学家一样结构化地思考
  14. IDEA 2019 修改中文字体
  15. PHP如何启动scrapy,python,_新手Scrapy爬虫运行问题,python - phpStudy
  16. 在JavaScript中没有二维数组的概念
  17. xcode真机调试--添加iOS最新版本-添加最新的 DeveloperDiskImage
  18. 固定定位的盒子使用margin:0 auto;是无法水平居中的,此时该怎么操作呢?
  19. FPM五:拆解前面的四——OVP做查询和结果
  20. JavaScript赋值运算符,比较运算符,逻辑运算符

热门文章

  1. 全球最奢侈的运动品牌中国十大顶级学生儿童平衡自行车品牌排行榜
  2. 解决“由于文件许可权错误 word无法完成保存”问题
  3. 忠实通物流信息管理系统
  4. 三菱,实现面向家庭剧院的液晶投影仪
  5. IQueryable和IEnumerable学习
  6. 单元格内容分列多行_『如何将excel单个表格里的多行数据分列』
  7. 如何在mac版chrome安装第三方插件
  8. unittest控制case执行顺序
  9. 银行贷款与网上借贷比较
  10. 快速列出字母+数字的全部组合