this指向的全部情况
概念:
函数所在当前作用域的对象:指函数被调用时所处的执行环境的对象。在JS中,执行环境是由函数被调用时的上下文决定的(特别地,如果一个对象有一个函数a,而这个函数a被赋值给了全局中的一个变量c,则c为一个独立的函数,故c所在的执行环境就是默认的全局(并非继承父函数的执行环境))
注:箭头函数不同于funciton
方式定义函数,箭头函数嵌套在另一个函数中时,它将继承最近的非箭头父函数的this
首先,明确一点:this的指向,只会在调用的时候才能确定
1)直接调用,指向全局(this不在函数中)
1 | console.log(this) |
打印结果
2)this在函数中
this的指向,只会在调用的时候才能确定
如果函数执行时,没有所属对象,this则指向全局windows{}
1 | let a = { |
打印结果
3) 构造器中的 this:指向新对象
1 | function a(){ |
打印结果
4)apply、call能够改变this指向
无参数时或者传入null、undefined,指向window
apply()、call()都是函数的方法:
- 若apply()、call()无参数时或者传入null、undefined,则指向windows
- 若apply()、call()有参数时,第一个参数就是apply()、call()函数的调用者函数的作用域
1 | function a(){ |
打印结果