vue 组件5 VueComponent()构造函数深入理解

本文详细解析了Vue组件的构造过程,通过一个school组件的例子展示了组件如何被注册和使用,并通过console.log()分析了组件的构造函数性质。内容包括组件实例化的验证,如VueComponent的生成和不同组件实例的独立性。此外,还探讨了组件内部的数据管理和this的指向变化,以及vm如何管理组件实例。最后,通过事件监听展示了组件内部的方法执行情况。
摘要由CSDN通过智能技术生成

要点:

 

小案例

定义一个school组件

并注册使用

 

然后我们进行一个对组件的console.log,看这个组件是个什么类型

发现组件是一个构造函数

 

验证源码js中VueComponent被调用了

发现被调用了

1.

 注意这边是构造函数

 

 2.

既然school是一个构造函数,那么就会生成一个实例对象即new Vuecomponent(option) 

还传入了配置对象

其实绿色框里面的就是配置对象 

 验证:

写两个组件标签就会被调用两次

 

不写组件标签就不给你调

 

3.

验证:

再定义一个hello组件

 在进行注册和使用,并进行一个console.log()输出

发现这两输出的结构函数显示一样,但是它们是两个new Vuecomponent()!!!!

验证它们两是两个new Vuecomponent()

1.直接进行比较

证明这两个不一样

 

 2.赋值

再school上附上一个值a

看hello上有没有附上

第一个有第二个没有就说明这个两个不是同一个

 3.找源码 

因为Vuecomponent()构造函数是Vue.extend()实现的所以直接去源码里找extend()方法

发现extend是个方法并且其中定义了一个方法最后又输出了一个函数,也就是说组件是一个函数并且是现定义的

 

 

也就是说当你写一个组件标签的时候,会调用vue.extend函数生成一个VueComponent

下图两个组件的VueComponent 不一样

 

 4.

验证

在组件中写一个弹窗事件

 弹出this信息

发现出来的是VueComponent 说明是一个组件

打开发现里面和vm很像_data 也有 set get函数也有

 

其实就是把数据之类的全放在了VueComponent对象里了,说白了这边就是把this的指向,从我们之前讲的vm换成了VueComponent

 

 5.怎么体现

vm在管理vc?????????

验证:

非常简单只要输出vm看里面有没有Vuecomponent就行了

会发现里面有个children里面就有这两个组件

当在student上写一个子组件

 

 

 

 

 

 

 

 

 

 

 

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值