JavaScript中的this指向

145 阅读1分钟
  • 如果是该函数是一个构造函数,this指针指向一个新的对象
  • 在严格模式下的函数调用下,this指向undefined
  • 如果是该函数是一个对象的方法,则它的this指针指向这个对象

一般来说,最常见的就是上述第三种情况,this最终指向的是调用它的对象。也就是说,在这种情况下,当this所在的函数被调用时,this才得以确定。

var obj1 = {
  foo:'小吉良1',
  a:function a(){
      console.log(this.foo);
  }
}
var obj2 = {
 foo:'小吉良2',
 a:obj1.a
}
obj1.a();//小吉良1
obj2.a();//小吉良2

但是有几种特殊情况

  1. 非严格模式下,全局作用域下的函数调用对象默认是window。
function a(){
    var foo = "小吉良";
    console.log(this.foo); 
    console.log(this); 
}
a();
//undefined
//Window

  1. 多级对象调用时,this指向最近的那层调用它的对象
var foo = 'window小吉良'
var obj = {
  foo:'小吉良',
  a:function a(){
      console.log(this.foo);
  }
}
window.obj.a()//'小吉良'

3.箭头函数的this,是调用它的对象的this,注意是调用它的对象的this,不是调用它的对象

var foo = 'window name'
var obj = {
    foo: 'obj name',
    sayN: () => {
        console.log(this.foo)
    }
}
obj.sayN() //window name