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 @   帅到被人砍的阿豪  阅读(209)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示