在 js 中 this不是固定不变的,它会随着执行环境的改变而改变。要注意的是 this 取什么值,是在执行时确认的,定义时无法确认。 this 的调用大概分为四种场景:
1.浏览器里,在全局范围内的 this 指向 window 对象;
2.在函数中,this 永远指向最后调用他的那个对象;
3.构造函数中,this 指向 new 出来的那个新的对象;
4.箭头函数中 this 比较特殊,箭头函数 this 为父作用域的 this,不是调用时的 this.要知道前四种方式,都是调用时确定,也就是动态的,而箭头函数的 this 指向是静态的,声明的时候就确定了下来;
有三个方法改变 this:
call:参数是单个使用的, apply:参数是一个数组 call 和 apply 都会立刻调用这个函数 bind:只改变 this 不会让函数立刻调用