总结一下this的指向:
| 调用方式 | 示例 | 指向 | 解释 | |
|---|---|---|---|---|
通过new调用 | 
      new Foo() | 
      新对象 | const foo = new Foo(),此时this指向foo | 
      |
| 直接调用 | foo() | 
      全局对象 | 取决于运行环境,在浏览器中为window,在node中为global | 
      |
| 通过对象调用 | obj.foo() | 
      前面的对象 | const obj = { foo: function() {} }函数foo的this指向obj | 
      |
通过call/apply/bind调用 | 
      foo.call(ctx) | 
      第一个参数 | foo.call(ctx),此时this指向ctx | 
      
由此可见,this的指向取决于调用方式,而不是函数定义方式。当你定义函数的时候, this的指向尚未确定。只有调用函数时,this的指向才会确定。
欢迎在评论区留下您的见解~