5.this指向问题

35 阅读1分钟

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被锁死,不能再改变了