普通函数和箭头函数中this的使用
前言
Javascript是一门基于对象的语言,即所有东西都是对象,在JS中函数也是对象。this是JS中非常重要的概念,需要注意的是this指向不是固定不变的,它会根据上下文执行环境的改变而改变。
全局环境
全局环境就是在里面,这里的this始终指向的是window对象。
<script>
console.log(this); // 全局环境,即window对象下,this -> window
</script>
局部环境
严格模式下,函数中的this为undefined
function fun() {
console.log(this);
}
fun(); // fun() 实际上是window.fun(), 所以this -> window
箭头函数和普通函数
箭头函数在定义的时候不会创建自己的 this 上下文,而是会继承所在域的 this 值,这种机制我们称箭头函数的 this 是静态绑定的。普通函数在定义时会创建 this 上下文,在不同的情形下 this 指向不同,但是我们可以概括的说,对于普通的函数的 this,谁调用指向谁
【注意:因此如果我们在回调中无法通过this调用全局的window对象,】