阿西河

所有教程

公众号
🌙
阿西河前端的公众号

我的收藏

    最近访问  (文章)

      教程列表

      抓包专区
      测试专区

      JavaScript call和apply()的作用和区别;

      核心

      动态改变某个类的某个方法的运行环境,就是改变 this 关键字

      • call是参数一个一个的传
      • apply是把参数当做一个数据统一传进去,类似arguments;

      call和apply的区别

      • Function.prototype.call 和 Function.prototype.apply 它们的作用一样,区别仅在于传入参数的形式的不同。

      • 当使用 call 或者 apply 的时候,如果我们传入的第一个参数为 null,函数体内的 this 会指 向默认的宿主对象,在浏览器中则是 window

      • 有时候我们使用 call 或者 apply 的目的不在于指 定this 指向,而是另有用途,比如借用其他对象的方法。那么我们可以传入 null 来代替某个具体的对象

      call和apply的用途

      1. 改变this指向
      2. Function.prototype.bind
      3. 借用其他对象的方法

      call

      function add (a, b) {
        console.log(a + b);
      }
      function sub (a, b) {
        console.log(a - b);
      }
      add.call(sub, 3, 1);
      //用 add 来替换 sub,add.call(sub,3,1) == add(3,1) ,所以运行结果为: (4);
      

      js 中的函数其实是对象,函数名是对 Function 对象的引用

      更多参考:https://juejin.im/entry/58d0a7b22f301e007e5a15ae

      更多面试题

      如果你想了解更多的前端面试题,可以查看本站的WEB前端面试题 ,这里基本包涵了市场上的所有前端方面的面试题,也有一些大公司的面试图,可以让你面试更加顺利。

      面试题
      HTMLCSSJavaScript
      jQueryVue.jsReact
      算法HTTPBabel
      BootStrapElectronGulp
      Node.js前端经验相关前端综合
      Webpack微信小程序-

      这些题库还在更新中,如果你有不错的面试题库欢迎分享给我,我整理后放上来;人人为我,我为人人,互帮互助,共同提高,祝大家都拿到心仪的Offer!

      目录
      目录