this关键词

this关键词指的是它所属的对象。其拥有不同的值,具体取决于它的使用位置,也就是说this的指向在函数定义时无法确定,只有在函数执行时才能确定this的指向,因此可以理解为this的最终指向为那个调用它的对象

  • 情况1:如果一个函数中有this,但未被上一级对象调用,那么this指向window
  • 情况2:如果一个函数中有this,这个函数有被上一级对象调用,那么this指向上一级对象
  • 情况3:如果一个函数中有this,这个函数包含多个对象,尽管这个函数是被最外层的对象所调用,this指向的也只是它的上一级对象
 var o = {  
  a:10,  
  b:{  
  a:12,  
  fn:function(){  
  console.log(this.a); //undefined  
  console.log(this); //window  
  }  
  }  
 }  
 var j = o.b.fn; //只创建,并为执行/调用  
 j();  //此时才调用,所以this为window

总结一下

  • 在方法中,this 指的是所有者对象
  • 单独的情况下,this 指的是全局对象
  • 在函数中,this 指的是全局对象
  • 在函数中,严格模式下,thisundefined
  • 在事件中,this 指的是接收事件的元素
  • 类似 call() 和 apply() 方法可以将 this 引用到任何对象

HeXuan
9 声望1 粉丝