0
点赞
收藏
分享

微信扫一扫

web前端-JavaScript中的call、apply和bind方法(改变this指向)


🐚作者简介:苏凉(专注于网络爬虫,数据分析,正在学习前端的路上)
🐳博客主页:​苏凉.py的博客​ 🌐系列总专栏:web前端基础教程​ 👑名言警句:海阔凭鱼跃,天高任鸟飞。
📰要是觉得博主文章写的不错的话,还望大家三连支持一下呀!!!
👉关注✨点赞👍收藏📂

文章目录

  • ​​每日推荐​​
  • ​​正文开始​​
  • ​​call()和apply()​​
  • ​​bind()()​​
  • ​​call、apply和bind方法的区别​​
  • ​​相同点​​
  • ​​不同点​​
  • ​​this指向的四种情况总结​​

正文开始

call()和apply()


  • 这两个方法都是函数对象的方法,需要通过函数对象来调用
    1.当不传递参数时,call和apply和函数调用的效果并无区别,this永远指向window
  • web前端-JavaScript中的call、apply和bind方法(改变this指向)_this指向

  • 2.在调用call()和apply()可以将一个对象指定为第一个参数,此时这个对象将会成为函数执行时的this
  • web前端-JavaScript中的call、apply和bind方法(改变this指向)_apply_02

  • 3.call()方法可以将实参在对象之后依次传递
  • web前端-JavaScript中的call、apply和bind方法(改变this指向)_this指向_03

  • 4.apply()方法需要将实参封装到一个数组中统一传递
  • web前端-JavaScript中的call、apply和bind方法(改变this指向)_bind_04

bind()()

为什么bind方法会有两个小括号?因为使用bind方法会返回一个新的方法,需要重新调用才行。除此之外,bind方法个call方法一致。


  • bind方法也是函数对象的方法,需要通过函数对象来调用。
    1.当不传递参数时,this永远指向window
  • web前端-JavaScript中的call、apply和bind方法(改变this指向)_apply_05

  • 2.将一个对象作为第一个参数,this指向传入的对象。
  • web前端-JavaScript中的call、apply和bind方法(改变this指向)_javascript_06

  • 3.bind方法可以将实参在对象之后依次传递
  • web前端-JavaScript中的call、apply和bind方法(改变this指向)_this指向_07

call、apply和bind方法的区别

相同点

  1. 都是函数对象的方法。
  2. 都可以改变this指向。
  3. 通过这三个方法调用函数时,传入一个对象作为第一个参数时,this指向这个对象,若不传入任何参数,this指向则与函数调用时的一样,指向window

不同点

  1. call和apply是直接执行函数调用,而bind会返回一个新的方法,需要再次调用。
  2. 在传入一个对象作为第一个参数时,call和bind方法在该对象后面传入以逗号分隔的参数列表,而apply传入的时一个数组对象。

this指向的四种情况总结

1.以函数形式调用时,this永远都是window
2.以方法的形式调用时,this是调用方法的对象
3.以构造函数的形式调用时,this是新创建的那个对象
4.使用call、apply和bind调用时,this是指定的那个对象


举报

相关推荐

0 条评论