1.

var func=function(a,b,c){console.log([a,b,c]);};
func.apply(null,[1,2,3]);  //[1,2,3]
func.call(null,1,2,3);  //[1,2,3]
func.bind(null,1,2,3);  //无输出
func.bind(null,1,2,3)();    //[1,2,3]
func.bind(null)(2,3,4)  //[2,3,4]

解析:

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

apply和call只是参数传入形式不同,其他一样。但bind则不同:前面的调用call或apply时,函数直接运行,但bind不会运行,而是返回一个绑定上下文的函数并且this永远的指向bind括号中的第一个参数。

2.

call、apply和bind主要有2个作用:

①改变this的指向;

②借用其他对象的方法

转载于:https://www.cnblogs.com/jacksplwxy/p/6843307.html

(O)JS核心:call、apply和bind相关推荐

  1. js之call,apply和bind的模拟实现

    了解call,apply和bind对于看一些源码以及封装一些工具有很大的作用. 如果想要了解并熟练使用它..就必须知道他的基本的实现原理. 一,基本用法 使用 let obj = {a: 18 }fu ...

  2. 理解js中的this指向以及call,apply,bind方法

    <script> function a(){var user = "追梦子";console.log(this.user); //undefinedconsole.lo ...

  3. 手动封装js的call和apply和bind和typeof和new方法

    我是歌谣 放弃很容易 但是坚持一定很酷 微信公众号关注小歌谣一起学习前后端知识 闲来无事做 不如敲代码今天讲一下js里面的callapply和bind和typeof方法的手动封装由于最近比较忙但是有时 ...

  4. JS高级——手写call()、apply()、bind()

    0.call.apply.bind的区别 bind,call,apply的作用都是用来改变this指向的 call方法 call方法的第一个参数是this的指向 后面传入的是一个参数列表(注意和app ...

  5. 【JS】call,apply,bind

    [JS]call,apply,bind const steven = {name: "Steven",phoneBattery: 70,charge: function (leve ...

  6. JS 中 call()、apply()、bind() 的用法

    其实是一个很简单的东西,认真看十分钟就从一脸懵B 到完全 理解! 先看明白下面: 例 1 obj.objAge; // 17obj.myFun() // 小张年龄 undefined 例 2 show ...

  7. 方法apply作用于对象sort时失败_浅析call、apply 与 bind

    点击上方蓝色字体轻松关注 前言 经典模式题:call.apply 与 bind的区别.来吧,今天搞一搞. call(thisArgs [,args...]) 该方法可以传递一个thisArgs参数和一 ...

  8. 微信小程序之apply和call ( 附示例代码和注释讲解) apply call  bind

    微信小程序开发交流qq群   173683895 相同点:作用是一样的,它们能劫持另外一个对象的方法,继承另外一个对象的属性: js中的call(), apply()和bind()是Function. ...

  9. JavaScript中的call、apply、bind深入理解

    一.函数的三种角色 首先要先了解在函数本身会有一些自己的属性,比如: length:形参的个数: name:函数名: prototype:类的原型,在原型上定义的方法都是当前这个类的实例的公有方法: ...

  10. 记录call、apply、bind的源码

    记录一下call.apply.bind的源码,然后从根本上明白其用法. 都知道call.apply与bind的用法,call(this,...arguments).apply(this,[argume ...

最新文章

  1. NetBpm 组织架构(4)
  2. git学习——四git版本管理
  3. jQuery源码 Ajax模块分析
  4. python PyQt5 QtWidgets.QAbstractSlider.valueChanged()
  5. 嵌入式笔录(3)-电容,频率与幅度基础
  6. GridView的 使用
  7. 程序员面试金典 - 面试题 05.02. 二进制数转字符串(浮点型 转 二进制小数,乘2取整)
  8. IntelliJ IDEA 2020修改菜单显示大小
  9. 闹猴网页特效集软件 v1.0.5.21
  10. Java Micro services: 传送唯一标识(request id)在Hessian call, rest API,JMS和Thread之间
  11. RabbitMQ (一) MQ介绍以Linux下RabbitMq环境安装
  12. 理解R-CNN、SPP-NET、Fast R-CNN、Faster R-CNN、FPN博文整理
  13. 常用的开源3D游戏引擎(转)
  14. 重磅 | 谱尼测试圆满承办化妆品生产企业研学班
  15. office办公所有版本齐全
  16. 2021.10.25-10.31 AI行业周刊(第69期):AI进化之路
  17. Python的简单代码:两天肝出画函数图像(散点图)的程序(不用matplotlib)(含白菜也能看懂的超超超详细讲解和源代码哦)
  18. cadence 怎么拼版_在Allegro中如何拼板
  19. iOS 获取屏幕尺寸
  20. Comet OJ 夏季欢乐赛 Gree的心房

热门文章

  1. Java韩顺平 | IO流专题 | 学习小记
  2. html怎么保存曲奇,曲奇烘焙不可不知的小技巧,烘焙出绝对赞的口感!
  3. 无法解析 org.apache.commons:commons-pool2:2.4.2
  4. ZeroMQ使用教程
  5. Linux入门基础命令(四)
  6. 图像处理里面的的尺度什么?
  7. windows server2012 domain user权限配置
  8. PHP Notice: undefined index xxx
  9. Java 垃圾回收机制
  10. 【Excel】多条件查找