奇怪的this
1 2 3 4 5 6 7 8 9 | var obj = { id: "awesome" , cool: () => { // 普通函数this是在运行时确定的,而箭头函数绑定了上层函数或window的this console.log( this .id); } }; var id = "not awesome" ; obj.cool(); // not awesome setTimeout(obj.cool, 1000); // not awesome |
obj.cool() 执行调用时,this本应该指向obj,但是因为cool是用箭头函数声明的,所以cool本身绑定了词法作用域,也就是绑定了被声明时上层函数的this,上层函数的this是啥就是啥,如果没有则指向window。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~