JavaScript中 this 关键字
同步时的情况
一,单独使用 this,它指向全局(Global)对象,即window对象。
二,在对象方法中, this 指向调用它所在方法的对象。
同步:且为function时:this指向调用当前方法的对象
注意下面这个例子,和上面这个例子进行对比:
结论:this永远指向的是最后调用它的对象,也就是看它执行的时候是谁调用的。上例中虽然函数fn是被对象b所引用,但是在将fn赋值给变量j的时候并没有执行所以最终指向的是window。
这里之所以对象a可以点出函数Fn里面的user是因为new关键字可以改变this的指向,将这个this指向对象a,为什么说a是对象,因为用了new关键字就是创建一个对象实例,理解这句话可以想想我们的例子3,我们这里用变量a创建了一个Fn的实例(相当于复制了一份Fn到对象a里面),此时仅仅只是创建,并没有执行,而调用这个函数Fn的是对象a,那么this指向的自然是对象a,那么为什么对象a中会有user,因为你已经复制了一份Fn函数到对象a中,用了new关键字就等同于复制了一份。
同步,且为箭头函数时:this指向window
三,函数使用中,this 指向函数的所属者,即window对象。
同步,且为function时:this指向window
同步,且为箭头函数时:this指向window
四,在 HTML 事件句柄中,this 指向了接收事件的 HTML 元素。
点击后:
点击后:
异步时的情况
箭头函数体中的 this 对象,是定义函数时的对象,而不是使用函数时的对象。