this 指向
-官方:指当前代码执行的上下文环境(context)
-私人:
就是一个使用在作用域内(全局 / 函数内)的关键字
全局作用域 this
->在全局作用域内,this就是window(特指前端JS)
函数作用域 this
定义:不管函数在哪定义,不管函数怎么定义,只看函数的调用方式(箭头函数除外)
1、普通调用
-函数名()
-函数内的 this 指向 window
2、对象调用
-对象名.函数名()
-函数内的 this 指向 点( . )前面的全部内容
3、事件处理函数
-事件源.on事件类型 = 函数
-事件源.addEventListener(‘事件类型’,函数)
-函数内的 this 指向 事件源(绑定在身上的事件)
4、定时器处理函数
-setTimeout(函数,数字)
-setInterval(函数,数字)
-函数内的 this 指向 window
5、自调用函数
-(函数)()
-函数内的 this 指向 window
6、箭头函数
-() => {}
-函数内的 this 是该箭头函数外部作用域的 this
-唯一一个不看调用看定义决定 this 的
强行改变 this 指向
this 指向是因为函数的调用而出现的
在调用函数的的时候,改变函数内的this指向
1、call ()
语法:直接连接在函数后面使用
函数名.call()
对象名.函数名.call()
参数:
第一个参数:函数内的 this 指向
第二个参数开始:依次给是该函数的实参
特点:立即调用函数
2、apply()
语法:直接连接在函数后面使用
函数名.apply()
对象名.函数名.apply()
参数:
第一个参数:函数内的this指向
第二个参数:是一个数组或者伪数组类型都可以,内部每一个数据按照顺序是该函数的实参
特点:立即调用函数
特殊作用:改变函数传递参数的方式
3、bind()
语法:直接连接在函数后面使用
函数名.bind()
对象名.函数名.bind()
参数:
第一个参数:函数内的this指向
第二个参数开始:依次给是该函数的实参
特点:不会立即调用函数,而是返回一个新的函数,新函数内的this被锁定死了
特殊作用:改变那些不会被立即调用的函数的 this