this 关键字
是一个指针
this指向向当前所在函数的执行对象。
1.默认执行 (默认绑定) ----------this->widow
2.对象执行(隐式绑定) ----------- this->该对象
对象.函数();
3.作为回调函数使用时 (隐式丢失) ----------this->widow
function fn( 形参){ 参数()}; fn( 实参) ; // 实参是一个函数 此时实参的this指向是widow
4.new 执行时 this -> new出来的对象
new 函数()
5.强制绑定
bind,call , apply
1.bind
fn.bind(参数1,参数2,参数3....)
作用:改变this指向,会返回新的函数
参数:1. 要改变的this指向
2~. 传入原函数的参数
返回值:修改了this或参数之后的新函数
是否改变原函数:否
2.call
fn.call(参数1,参数2,参数3....)
作用:改变this指向,自动执行改变之后的原函数
参数:1. 要改变的this指向
2~. 传入原函数,作为原函数的参数
返回值:原函数的返回值
是否改变原函数:否
3. apply
fn.apply(参数1,[参数2,参数3....])
作用:改变this指向,自动执行改变之后的原函数
参数:1. 要改变的this指向
2~. 数组,会传入原函数覆盖原函数的arguments
返回值:原函数的返回值
是否改变原函数:否
误解1: this 就是当前函数 X
误解2:this 在哪定义就是谁 X
误解3. this是变量 X