奇怪的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。

posted @   黄燃  阅读(11)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示