实例对象的__proto__
指向构造函数的原型对象
vue的实例对象(vm)的__proto__
指向构造函数(Vue)的原型对象
原型对象也是对象,所以也有__proto__
VueComponent的实例对象(vc)的__proto__
指向构造函数(VueComponent)的原型对象
没有上面黄色那条线
VueComponent的原型对象的__proto__
指向了Vue的原型对象
VueComponent.prototype.__proto__ === Vue.prototype
VueCOmponent的原型对象的隐式原型属性就是Vue的原型对象
想要在vc上查找属性x,沿着__proto__链
找
先在vc上找,没有,在去VueComponent上
找,没有,去Vue的原型对象上找,找到了,返回99(如果此时没有找到,去Object
的原型对象上继续找,找不到,返回undefined
)
本来应该是直接去Object的原型上找,但是vue做了这条线后,先去Vue的原型上找找,找不到再去Object的原型上找。
这样vue原型上的东西,不止vm能用,vc也能用
总结:
1.一个重要的内置关系:VueComponent.prototype.__proto__ === Vue.prototype
2.为什么要有这个关系:让组件实例对象(vc)可以访问到 Vue原型上的属性、方法。
组件实例对象(vc)是一个小型的vm ,没有el.data只能是对象式