• 对于直接调用 foo 来说,不管 foo 函数被放在了什么地方,this 一定是 window
    • 对于 obj.foo() 来说,我们只需要记住,谁调用了函数,谁就是 this,所以在这个场景下 foo 函数中的 this 就是 obj 对象
    • 对于 new 的方式来说,this 被永远绑定在了 c 上面,不会被任何方式改变 this
    • 箭头函数其实是没有 this 的,箭头函数中的 this 只取决包裹箭头函数的第一个普通函数的 this。
    • 最后种情况也就是 bind 这些改变上下文的 API 了,对于这些函数来说,this 取决于第一个参数,如果第一个参数为空,那么就是 window。(多次bind取第一次的)

    16717eaf3383aae8.jpg