VueComponent 原型 和Vue原型之间的关系

//原型对象和java对象的静态变量类似,java中只要静态变量用public static 修饰,就可以用 类名/实例名 来 访问/定义(当然如果在类内部权限修饰符也没有意义),
// 只是java中可以用类名直接访问静态变量,但是在Js中只能用构造函数名+prototype来访问,而对象实例可以用对象名直接访问,或者加__proto__ 但是不能用d.prototype访问
// 另外 js的 原型是一个对象
首先要知道,构造函数(对象) 都是有原型 prototype 的,而 构造函数实例(对象实例) 有 __proto__,
这两者都指向 构造函数的原型对象,
构造函数的


VueComponent.prototype.__proto__ = Vue.prototype
function Demo(){}; const d = new Demo();
Demo.prototype 和 d.__proto__指向同一个对象, 这个对象 是Object的实例对象
所有对象的原型对象都是Object对象的实例,
但是VueComponent除外,VueComponent的原型对象 __proto__ 指向Vue 的原型对象。
隐式原型链。 vc.__proto__ -> VueComponent的原型对象 -> Vue 的原型对象 -> Object的原型对象。
这点表述的不是特别明白,是怎么实现转VueComponent的原型对象的指向;
这是因为VueComponent的原型对象是类是Vue,但是Vue的原型对象的类是 匿名的。

vue.js的源代码如下示
VueComponent的实例 通过Vue.extend来实现,
在VueComponent的实例创建完成后,其prototype就手动指向了 Vue的原型对象

其它普通类型的原型对象的类型都是 匿名的

我们也可以手动修改普通对象的 原型对象的 类型

修改后也能 d.x 的值是 x了
