1.一个重要的内置关系:VueComponent.prototype.proto === Vue.prototype

2.为什么要有这个关系:让组件实例对象(vc)可以访问到 Vue原型上的属性、方法。

图示:

​ vue在vueComponet的原型对象与vue的原型对象中加了一条线

​ 让vc能用到vue原型对象上的诸多优秀方法

image-20221006214133088

一、验证该关系

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

<script>
var school=Vue.extend({
name:"school",
template:`
<div>
<h1>school</h1>
</div>`,
data(){
return{
hello:"hello"
}
}
})
var vm=new Vue({
el:'#root',
components:{school,student}
})
console.log("内置关系成立吗",school.prototype.__proto__===Vue.prototype);
//true
</script>

二、原型链中的解释。

构造函数上的原型属性和 构造器所创建的对象上的隐式属性所指向的为同一个原型对象

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21



//定义一个构造函数
function Demo(){
this.a = 1
this.b = 2
}
//创建一个Demo的实例对象
const d = new Demo()

console.log(Demo.prototype) //显示原型属性

console.log(d.__proto__) //隐式原型属性

console.log(Demo.prototype === d.__proto__) //t
---->true;
//程序员通过显示原型属性操作原型对象,追加一个x属性,值为99
Demo.prototype.x = 99

console.log('@',d)

二、内置关系的使用

  1. 全局事件总线