this指向情况详解
常见this指向
this是使用在作用域里面的关键字,在不同的作用域里有不同的含义。
常见的this指向:
- 在对象Object的函数方法中,指向对象本身
- 在全局函数中,指向window
- 在回调函数中(例如定时器、数组和字符串的一些方法),指向window
- 在事件函数中,指向监听事件的对象(e.currentTarget)
- 在箭头函数中,this将会是箭头函数外上下文环境的this指向
改变this指向
通过调用函数的方式改变this的指向,有三种方法
1、call
==可以在函数调用的时候改变函数内部的this指向
==语法:函数名.call(指定的this指向,实参1,实参2…)
==使用call,函数会立即执行
2、applay
==可以在函数调用的时候改变函数内部的this指向
==语法:函数名.applay(指定的this指向,[实参1,实参2…])
==使用applay,函数会立即执行
==和call的区别在于给函数传参的方式不同
3、bind ( vue,react 框架的时候会经常使用到)
==语法: var 新函数名=函数名.bind(指定的this指向)
==可以把函数的this指向改变之后产生一个新的函数,原函数的this指向不变
==新函数里的this指向永远是你指定的this指向
==bind不会立即执行函数,只会产生一个新函数