this是一个关键字,存在于作用域内。
this的指向
全局作用域下:this指向window
局部作用域下:this指向和调用它的函数有关系
普通函数调用:this指向window
对象调用:this指向点(.)前面的那个对象
事件处理函数中的:this指向事件源
定时器中的:this指向window //这里的this和箭头函数没有关系
强行改变this指向
this指向和函数调用有关系,Function.prototype提供了三个方法:call/apply/bind
call()
语法:函数.call(参数1,参数2,...)
参数1:你要让this指向的对象
从第二个参数就是需要传递的参数
以列表的形式进行传递,有多少写多少
作用:用来改变this指向
特点:会立即执行这个函数
apply()
语法:函数.apply(参数1,参数2)
参数1:你要让this指向的对象
参数2:就是我们要传递的参数,以数组的形式进行传递
第二个参数是一个数组(伪数组)
特点:会立即执行这个函数
bind()
语法:函数.call(参数1,参数2,....)
参数1:你要让this指向的对象
从第二个参数就是需要传递的参数
以列表的形式进行传递,有多少写多少
作用:用来改变this指向
特点:不会立即执行这个函数,会返回一个改变this指向以后的函数,要使用的时候需要调用
特点:这个时候的this被锁死,不能再改变了