JavaScript 中的 this 指向问题

今天在群里看到大家在讨论一个问题,就是 this 的指向,并且牵扯到了 letconst 的变量提升,比如说在全局顶部声明的 let 变量能否挂载到 window 下之类的。
还是老流程,先讨论第一个问题,然后再开始牵扯到后续的展开。

this 指向大概分为两种,普通函数内的 this 和 箭头函数内的 this,箭头函数内的 this 其实挺好理解的,主要是因为各种 call()apply()bind()new 影响下的 this 指向问题。


先来最简单的demo来说明 this 的最终指向的是那个调用它的对象

function t1(){
  console.log(this); 
}
t1() // logs Window
// 其实等同于 window.t1()
var t2 = {
  name:'t2',
  fn:function(){
    console.log(this);
 }
}
t2.fn(); // logs {name: "t2", fn: ƒ}
var t3 = {
  a:1,
  b:{
    fn:function(){
      console.log(this.a)
    }   
  }
}
t3.b.fn() // logs undefined
// t3.b中并没有属性a

这样就很好理解了,就是从谁的身上点出来的方法,这个 this 就是在指向谁的。如果没有默认就是 window(严格模式下稍有不同是 undefined),例如 t1()

# 构造函数中的 this

# Call, Apply, Bind 影响下的 this

# Class 下的 this


未完成

突然发现之前还有一个坑没有填,我先去把旧坑填完。

函数的扩展 - ECMAScript 6入门
彻底理解js中this的指向,不必硬背 - 追梦子
那些年我们一起过的JS闭包,作用域,this,让我们一起划上完美的句号 - 追梦子
如何理解 Call, Apply, Bind?