千锋教育JavaScript全套视频教程(10天学会Js,前端javascrip

this关键字
- 介绍
- this是JS中的一个关键字
- this表示的是一个指向,在不同情况下 this的指向是不同的
this的指向:
- 在全局中,this指向的是 window对象
- 定时器中的this,指向window对象。
- 因为定时器是window对象的方法,不管定时器写在哪里,哪怕是嵌套在obj里面的函数里,都指向window对象
- 对象方法中的this,指向对象本身
- 在普通函数中,this指向的是 函数的调用者(对象)
- 在事件处理函数中,this指向的是事件源
改变this指向
call()
- 语法:函数名.call()
- 可以附加在函数调用后面使用,可以忽略函数本身的this指向,制定一个新的this指向
- 参数
- 参数1:给函数指定 改变的this指向
- 从第二个参数开始,后面的每个参数依次是函数的实参
- 特点:调用call()方法之后,会立即执行函数
apply()
- 语法:函数名.call()
- 可以附加在函数调用后面使用,可以忽略函数本身的this指向,制定一个新的this指向
- 参数
- 参数1:给函数指定 改变的this指向
- 参数2:是一个数组,数组里面的每一项值 依次是函数的实参
- 特点:调用apply()方法之后,会立即执行函数
bind()
- 语法:函数名.bind()
- 可以附加在函数调用后面使用,可以忽略函数本身的this指向,制定一个新的this指向
- 参数
- 参数1:给函数指定 改变的this指向
- 从第二个参数开始,后面的每个参数依次是函数的实参
- 特点:调用bind()方法之后 不会立即执行函数 而是返回一个 改变了this指向的函数
- 使用场景:在函数改变了this指向,但是不需要立刻执行结果时;比如在事件处理函数中
总结 call()、apply()和bind()的区别
- call()和apply()会立即执行函数
- bind()不会立即执行函数