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
指的是全局对象 - 在函数中,严格模式下,
this
是undefined
- 在事件中,
this
指的是接收事件的元素 - 类似 call() 和 apply() 方法可以将 this 引用到任何对象
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。