码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • web前端-JavaScript中的call、apply和bind方法(改变this指向)


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

    文章目录

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

    每日推荐

    给大家推荐一款神器。无论你是学生党还是上班族都可以使用,这里涵盖了面试题库,在线刷题,各个大厂的面试/笔试真题等。如果你还是学生,最重要的一点就是模拟面试功能,智能AI1v1面试,帮助你早日拿到大厂offer!点击链接即可直达!=>牛客网-找工作神器
    在这里插入图片描述

    正文开始

    call()和apply()

    • 这两个方法都是函数对象的方法,需要通过函数对象来调用
      1.当不传递参数时,call和apply和函数调用的效果并无区别,this永远指向window
      在这里插入图片描述
      2.在调用call()和apply()可以将一个对象指定为第一个参数,此时这个对象将会成为函数执行时的this
      在这里插入图片描述
      3.call()方法可以将实参在对象之后依次传递
      在这里插入图片描述
      4.apply()方法需要将实参封装到一个数组中统一传递
      在这里插入图片描述

    bind()()

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

    • bind方法也是函数对象的方法,需要通过函数对象来调用。
      1.当不传递参数时,this永远指向window
      在这里插入图片描述
      2.将一个对象作为第一个参数,this指向传入的对象。
      在这里插入图片描述
      3.bind方法可以将实参在对象之后依次传递。
      在这里插入图片描述

    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是指定的那个对象

    更多题库和知识点总结,面试技巧请看=>牛客网,快来和我一起刷题吧!

  • 相关阅读:
    SpringBoot和SpringCloud版本对应
    LiveMedia视频监控汇聚管理平台视频接入方案(二)
    1391:局域网(net)——Prim、Kruskal 最小生成树
    Java中如何对Set进行遍历呢?
    PHP指的是什么 PhP程序语言基本注意事项
    keepalived:常见问题
    实验室信息化管理系统LIMS,实现实验室数据和信息的收集、分析、陈述和处理。
    FFmpeg源代码简单分析-其他-libswscale的sws_getContext()
    BUUCTF做题Upload-Labs记录pass-11~pass-20
    Python+OpenCV4马赛克图片合成
  • 原文地址:https://blog.csdn.net/weixin_46277553/article/details/125515333
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号