JavaScript 中 call()、apply()、bind() 的用法
其实是一个很简单的东西,认真看十分钟就从一脸懵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() 的用法相关推荐
- 复习javascript中call,apply,bind的用法
一直很难理解js中的call apply bind,在w3schools,mdn阅读了,也看了很多相关的文章,今天我来写下我理解的call apply bind 首先创建一个函数 function m ...
- JavaScript中call,apply,bind方法的总结。
why?call,apply,bind干什么的?为什么要学这个? 一般用来指定this的环境,在没有学之前,通常会有这些问题. var a = {user:"追梦子",fn:fun ...
- 如何在JavaScript中使用apply(?),call(?)和bind(➰)方法
by Ashay Mandwarya ?️?? 由Ashay Mandwarya提供吗? 如何在JavaScript中使用apply(?),call(?)和bind(➰)方法 (How to use ...
- JavaScript 中call apply 那点简单事
谈谈JavaScript 中call apply 那点简单事 平常是否遇到过call apply 的问题 比如说 怎么利用call.apply来求一个数组中最大或者最小值 如何利用call.apply ...
- call() , apply() ,bind()的用法
call() , apply() ,bind()的用法 - 作用:改变this指向,可以传递参数 - 语法: A.call(B, 参数1, 参数2)A.apply(B, [ 参数1, 参数2])A.b ...
- Javascript中的apply、call、bind
apply . call .bind 三者都是用来改变函数的this对象的指向的: apply . call .bind 三者第一个参数都是this要指向的对象,也就是想指定的上下文: apply . ...
- 浅谈JavaScript中的apply、call和bind
摘要 三种方法均可改变函数this关键字的指向. apply()接受一参数数组,返回函数执行的结果. call()接受一组参数,返回函数执行的结果. bind()接受一组参数,返回函数体.需在bind ...
- call(),apply(),bind()的用法及举例
通过学习call(),apply(),bind()的用法和区别,我们能更好的理解this及作用域的含义,为后面的编程打下基础. call()的用法: 调用一个函数,使其具有一个指定的this值和分别地 ...
- 浅谈JavaScript中的apply,call和bind
apply,call,bine 这三兄弟经常让初学者感到疑惑.前两天准备面试时特地做了个比较,其实理解起来也不会太难. apply MDN上的定义: The apply() method calls ...
- JS(javascript)中this的几种用法实例详解
本文主要介绍了javascript(以下简称js)中 this 用法,结合具体实例详细分析一下js中 this 的含义及使用方法,需要的朋友可以参考下. this 是 JavaScript 语言的一个 ...
最新文章
- 各国自动驾驶政策概况及特征
- C++知识点25——使用C++标准库(容器适配器stack、queue、priority_queue)
- javascript function
- react.js 引用 NavBar 报错svg-spite-loader
- boost::interprocess::interprocess_condition用法的测试程序
- boost::filesystem模块打印文件状态的测试程序
- TensorFlow深度学习实战---循环神经网络
- Django 下添加左侧字段显示和搜索
- plc维修入门与故障处理实例_13个浮筒液位计维修实例助你快速解决现场故障问题...
- io vivado 怎么查看ps_一次诡异的磁盘IO使用率高排查
- ipv6 静态路由配置
- 2022年建筑电工(建筑特殊工种)考试练习题及模拟考试
- RegShot(注册表比较工具)v2.0.1.68绿色中文版
- 数模转换器ADC0832使用原理及控制程序
- 以太网接口 数据采集 matlab,基于以太网接口并行多通道采集器的设计
- R语言,直方图的制作--hist()
- Windows下通过注册表修改某个类型文件的默认打开方式和文件图标
- Auto CAD标注表面粗糙度的方法
- 操作系统——磁盘操作
- mytrader-开源股票期货金融软件+支持C/C++/Python/Excel/VBA/麦语言的量化分析交易平台
热门文章
- 你是这样理解shell编程的嘛?
- UVA10179 Irreducable Basic Fractions【欧拉函数+数论】
- Bailian2681 求字符串长度【字符串】
- HDU2028 Lowest Common Multiple Plus【入门】
- Python —— CPU vs. GPU
- Linux 下的任务管理 —— ps、top
- 居之不易 —— 白居易
- morphogenesis —— 形态发生
- 整数、区间与区间端点
- warning C4819 解决方案 warning C4819: The file contains a character that cannot be represented in the cu