欢迎光临散文网 会员登陆 & 注册

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

2023-07-21 09:33 作者:光与影重名多  | 我要投稿

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()不会立即执行函数

call()和apply()在传参方式上略有区别,call是单个传参,apply是利用数组传参。都可以接收多个参数

千锋教育JavaScript全套视频教程(10天学会Js,前端javascrip的评论 (共 条)

分享到微博请遵守国家法律