欢迎光临散文网 会员登陆 & 注册

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

2023-03-25 21:53 作者:挨踢小虾米  | 我要投稿


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

// 另外 js的 原型是一个对象

首先要知道,构造函数(对象) 都是有原型 prototype 的,而 构造函数实例(对象实例) 有 __proto__, 

这两者都指向 构造函数的原型对象,


构造函数的

理论是这样vc

实际是这样

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的原型对象的类是 匿名的。

VueComponent的原型对象类型

vue.js的源代码如下示

VueComponent的实例 通过Vue.extend来实现,

在VueComponent的实例创建完成后,其prototype就手动指向了 Vue的原型对象

Vue的原型对象类型是匿名的 

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

Vue 的原型对象 也是匿名的

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

修改普通对象的原型对象类型


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


VueComponent 原型 和Vue原型之间的关系的评论 (共 条)

分享到微博请遵守国家法律