其实是一个很简单的东西,认真看十分钟就从一脸懵B 到完全 理解!

先看明白下面:

例 1

obj.objAge;  // 17
obj.myFun()  // 小张年龄 undefined

例 2

shows()  // 盲僧 

比较一下这两者 this 的差别,第一个打印里面的 this 指向 obj,第二个全局声明的 shows() 函数 this 是 window ;

1,call()、apply()、bind() 都是用来重定义 this 这个对象的!

如:

obj.myFun.call(db);    // 德玛年龄 99
obj.myFun.apply(db);    // 德玛年龄 99
obj.myFun.bind(db)();   // 德玛年龄 99

以上出了 bind 方法后面多了个 () 外 ,结果返回都一致!

由此得出结论,bind 返回的是一个新的函数,你必须调用它才会被执行。

2,对比call 、bind 、 apply 传参情况下

 
obj.myFun.call(db,'成都','上海');     // 德玛 年龄 99  来自 成都去往上海
obj.myFun.apply(db,['成都','上海']);      // 德玛 年龄 99  来自 成都去往上海
obj.myFun.bind(db,'成都','上海')();       // 德玛 年龄 99  来自 成都去往上海
obj.myFun.bind(db,['成都','上海'])();   // 德玛 年龄 99  来自 成都, 上海去往 undefined  

微妙的差距!

从上面四个结果不难看出:

call 、bind 、 apply 这三个函数的第一个参数都是 this 的指向对象,第二个参数差别就来了:

call 的参数是直接放进去的,第二第三第 n 个参数全都用逗号分隔,直接放到后面 obj.myFun.call(db,‘成都’, … ,‘string’ )。
apply 的所有参数都必须放在一个数组里面传进去 obj.myFun.apply(db,[‘成都’, …, ‘string’ ])。
bind 除了返回是函数以外,它 的参数和 call 一样。

当然,三者的参数不限定是 string 类型,允许是各种类型,包括函数 、 object 等等!

JavaScript 中 call()、apply()、bind() 的用法相关推荐

  1. 复习javascript中call,apply,bind的用法

    一直很难理解js中的call apply bind,在w3schools,mdn阅读了,也看了很多相关的文章,今天我来写下我理解的call apply bind 首先创建一个函数 function m ...

  2. JavaScript中call,apply,bind方法的总结。

    why?call,apply,bind干什么的?为什么要学这个? 一般用来指定this的环境,在没有学之前,通常会有这些问题. var a = {user:"追梦子",fn:fun ...

  3. 如何在JavaScript中使用apply(?),call(?)和bind(➰)方法

    by Ashay Mandwarya ?️?? 由Ashay Mandwarya提供吗? 如何在JavaScript中使用apply(?),call(?)和bind(➰)方法 (How to use ...

  4. JavaScript 中call apply 那点简单事

    谈谈JavaScript 中call apply 那点简单事 平常是否遇到过call apply 的问题 比如说 怎么利用call.apply来求一个数组中最大或者最小值 如何利用call.apply ...

  5. call() , apply() ,bind()的用法

    call() , apply() ,bind()的用法 - 作用:改变this指向,可以传递参数 - 语法: A.call(B, 参数1, 参数2)A.apply(B, [ 参数1, 参数2])A.b ...

  6. Javascript中的apply、call、bind

    apply . call .bind 三者都是用来改变函数的this对象的指向的: apply . call .bind 三者第一个参数都是this要指向的对象,也就是想指定的上下文: apply . ...

  7. 浅谈JavaScript中的apply、call和bind

    摘要 三种方法均可改变函数this关键字的指向. apply()接受一参数数组,返回函数执行的结果. call()接受一组参数,返回函数执行的结果. bind()接受一组参数,返回函数体.需在bind ...

  8. call(),apply(),bind()的用法及举例

    通过学习call(),apply(),bind()的用法和区别,我们能更好的理解this及作用域的含义,为后面的编程打下基础. call()的用法: 调用一个函数,使其具有一个指定的this值和分别地 ...

  9. 浅谈JavaScript中的apply,call和bind

    apply,call,bine 这三兄弟经常让初学者感到疑惑.前两天准备面试时特地做了个比较,其实理解起来也不会太难. apply MDN上的定义: The apply() method calls ...

  10. JS(javascript)中this的几种用法实例详解

    本文主要介绍了javascript(以下简称js)中 this 用法,结合具体实例详细分析一下js中 this 的含义及使用方法,需要的朋友可以参考下. this 是 JavaScript 语言的一个 ...

最新文章

  1. 各国自动驾驶政策概况及特征
  2. C++知识点25——使用C++标准库(容器适配器stack、queue、priority_queue)
  3. javascript function
  4. react.js 引用 NavBar 报错svg-spite-loader
  5. boost::interprocess::interprocess_condition用法的测试程序
  6. boost::filesystem模块打印文件状态的测试程序
  7. TensorFlow深度学习实战---循环神经网络
  8. Django 下添加左侧字段显示和搜索
  9. plc维修入门与故障处理实例_13个浮筒液位计维修实例助你快速解决现场故障问题...
  10. io vivado 怎么查看ps_一次诡异的磁盘IO使用率高排查
  11. ipv6 静态路由配置
  12. 2022年建筑电工(建筑特殊工种)考试练习题及模拟考试
  13. RegShot(注册表比较工具)v2.0.1.68绿色中文版
  14. 数模转换器ADC0832使用原理及控制程序
  15. 以太网接口 数据采集 matlab,基于以太网接口并行多通道采集器的设计
  16. R语言,直方图的制作--hist()
  17. Windows下通过注册表修改某个类型文件的默认打开方式和文件图标
  18. Auto CAD标注表面粗糙度的方法
  19. 操作系统——磁盘操作
  20. mytrader-开源股票期货金融软件+支持C/C++/Python/Excel/VBA/麦语言的量化分析交易平台

热门文章

  1. 你是这样理解shell编程的嘛?
  2. UVA10179 Irreducable Basic Fractions【欧拉函数+数论】
  3. Bailian2681 求字符串长度【字符串】
  4. HDU2028 Lowest Common Multiple Plus【入门】
  5. Python —— CPU vs. GPU
  6. Linux 下的任务管理 —— ps、top
  7. 居之不易 —— 白居易
  8. morphogenesis —— 形态发生
  9. 整数、区间与区间端点
  10. warning C4819 解决方案 warning C4819: The file contains a character that cannot be represented in the cu