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()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)