vue2源码中data初始化时候this指向问题以及引发的思考

new 的时候调用了一个this._init方法,这个方法在执行的时候调用了原型上面的方法
this._init()这就表示了在_init()函数中的this其实就是this._init()这个字段前面的this,然而这个this就是new字段创建实例对象中的第三步将空对象作为构造函数的上下文.也就是说this._init()函数中的this就是实例对象vm

发现:在this._init()函数中还调用了别的方法,在同一个文件中声明的方法,然后在这个方法中使用了this,我这边自己尝试,在函数中调用一个在全局声明的函数,得到的this其实就是window.vue2在初始化数据的时候将这个this改变为了vm实例
function c(){
debugger
this._init()
}
debugger
c.prototype._init=function(){
fuck()
}
function fuck(){
console.log(this); //这里的this,其实就相当于在全局声明的函数,不管在哪个函数或者说是对象里面调用,其实调用者都算是window
}
let b=new c()

posted @ 2023-03-13 22:06  帅到被人砍的阿豪  阅读(233)  评论(0)    收藏  举报