this是 JavaScript 语言的一个关键字,它是函数/方法运行时,在函数/方法内部自动生成的一个对象,只能在函数/方法内部使用。
在不同使用场合,this有不同的值。总的来说,this就是函数/方法运行时所在的环境对象。下面分四种情况,详细讨论this的用法。
1.函数调用:单纯作为函数调用时属于全局性调用,因此this就代表全局对象(window)
2.作为对象的方法调用:函数作为对象的方法被调用,那么this指向这个直接调用方法的对象(如果是二级对象,那么指向被调用方法最近的对象)。
3.构造函数中的this:指向创建的函数实例
4.箭头函数中的this:箭头函数本身没有this指向,它会捕获自己定义所处的外层执行环境(即父级作用域里的this),并且继承这个this值,指向当前定义时所在的对象。箭头函数的this指向在被定义的时候就确定了,之后永远都不会改变。即使使用call()、apply()、bind()等方法改变this指向也不可以。
例子:定义了全局变量isObject,那么此处箭头函数被定义时出于window中,此时this指向window对象
5.当一个元素被绑定事件处理函数时,this指向被点击的这个元素。
6.严格模式下(‘use strict’),没有this,this为undefind