以上两张图,我总结了一下,比较适合自己的看源码思路,以下就是看源码的思路写出来的:1.从函数参数,return值入手。2.提出自己心中的疑惑。3.先猜测,再验证。带有问号的地方是没有验证或者是还有疑惑。
vue的构造函数:
function Vue (options) {//vue的构造函数
if (!(this instanceof Vue)
) {
warn('Vue is a constructor and should be called with the `new` keyword');//警告方法,vue是一个构造函数,需要用new 来创建
}
this._init(options);
}
p1:this还有什么样的情况?
a1:this就是指向新new的Vue对象,比如我们,常用的this.[data里的数据]
p2:warn这个函数的封装是怎么样的?为什么能在函数内部调用?
a2:猜测:直接在vue对象里面用warn(),应该是用this.warn来定义,结合控制台来看,就是接到参数,在控制台里面打印。源码:源码里有this.warn,不过和this.warn没有什么联系,只是一个普通的console.warn的方法;
p3:this._init(options);该方法配置了什么
a3:猜测:所有vue对象的属性来源,比如methods,watch,data之类的,都是通过此方式配置,options设置了watch,data等等属性。源:
源码还有以上地方使用该方法,查了一个百度sub是附属的意思,个人猜测为这是一个组件注册的的地方[?]
p1:options是什么?
持续学习中。。。。。