call( )方法

1.call可以调用函数 fn.call( )
2.call可以改变this指向(call函数的第一个参数就是call所有调用函数里的this指向)
3.call函数的第二个及以后的参数是原函数的参数
4.解耦:把联系紧密的事物变得联系松散。

let dog = {name:"小黑"
}
function eat(str,music){console.log(this.name+"吃"+str+",唱着"+music);
}
//call()使dog与eat的关系变得松散了。
eat.call(dog,"油泼面","小苹果");//输出结果为小黑吃油泼面唱着小苹果

apply( )与call( )方法的相同点与不同点

相同点
1.改变this指向
2.第一个参数都是原函数的this指向
不同点
1.apply的第二个参数,是数组,数组里面市原函数的所有参数
2.call的第二个及以后的所有参数是原函数的所有参数

let dog = {name:"小黑"
}
function eat(str,music){console.log(this.name+"吃"+str+",唱着"+music);
}
eat.apply(dog,["油泼面","小苹果"]);

bind( )方法

bind:能够改变this的指向。
1、bind函数并不会调用原函数。
2、bind函数调用时是会产生新的函数(bind的返回值是新的函数),新的函数就是把原函数和对象永远绑在一起的函数

let dog = {name:"小黑"
}
function eat(str){console.log(this.name+"吃"+str);
}
let e =  eat.bind(dog);
e("油条");//小黑吃油条
e("油糕");//小黑吃油糕
e("油饼");//小黑吃油饼//eat.call(dog,"油条");//小黑吃油
//eat.call(dog,"油糕");//小黑吃油糕
//eat.call(dog,"油饼");//小黑吃油饼

call()和apply()及bind( )三者的相同与区别相关推荐

  1. call,apply,bind的用法与区别

    1.call/apply/bind方法的来源 首先,在使用call,apply,bind方法时,我们有必要知道这三个方法究竟是来自哪里?为什么可以使用的到这三个方法? call,apply,bind这 ...

  2. 函数的四种调用模式以及call()apply()和bind()

    函数的四种调用模式 根据函数内部this的指向不同,可以将函数的调用模式分成4种 函数调用模式 方法调用模式 构造函数调用模式 上下文调用模式(借用方法模式) 函数:当一个函数不是一个对象的属性时,我 ...

  3. 手写call,apply和bind(分析三者的用法与区别)

    它们有什么用及区别? 在阐述它们如何使用之前,我们有必要整理清楚this的用法,简单的说this是JavaScript语言的一个关键字,它是函数运行时,在函数体内部自动生成的一个对象,只能在函数体内部 ...

  4. call,apply,bind三者的区别

    1.本质上的区别 三者最大的区别是call和apply会改变this的指向并且立即执行函数,但是bind方法不会立即执行函数,而是会返回this改变后的函数. let obj = {          ...

  5. apply、call、bind三者的区别—附:防抖、节流函数

    apply.call.bind三者的区别 相同点 1.1 三者都能改变函数中的this指向 1.2 第一个参数都是是要改变的this指向的对象 不同点 2.1.第二个参数:apply传的是参数数组:c ...

  6. JavaScript 中 call、apply和bind的用法区别

    ECMAScript 规范给所有函数都定义了 call 与 apply 两个方法,它们的应用非常广泛,它们的作用也是一模一样,只是传参的形式有区别而已. 其实是一个很简单的东西,认真看十分钟就从一脸懵 ...

  7. JS中的call、apply、bind方法详解

    bind 是返回对应函数,便于稍后调用:apply .call 则是立即调用 . apply.call 在 javascript 中,call 和 apply 都是为了改变某个函数运行时的上下文(co ...

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

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

  9. JavaScript 中 call()、apply()、bind() 的用法

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

最新文章

  1. 什么是MySQL锁?有哪些锁类型?如何使用?
  2. php实现单选和多选功能,input:checkbox多选框实现单选效果跟radio一样
  3. UA OPTI570 量子力学4 带不含时的标量势的粒子的薛定谔方程
  4. 怎么测并发 PHP,PHP接口并发测试的方法(推荐)
  5. python爬虫取腾讯视频评论
  6. PHP-Manual的学习----【语言参考】----【类型】-----【对象】
  7. where in的sql语句按照指定ID进行排序的解决方法
  8. HarmonyOS IDE再升级,跨终端开发真的简单了吗?
  9. springboot mybatisplus 多数据源_【SpringBoot DB 系列】MybatisPlus 多数据源配置
  10. apache worker性能调优
  11. 饿了么的架构设计及演进之路
  12. 于群matlab仿真,33637《MATLAB-Simulink电力系统建模与仿真》于群(实例程序)
  13. Servlet面试题归纳
  14. Matlab 画图(全网最优质文章)
  15. IIS5 IIS6 IIS7区别
  16. 论文引用图片时的版权声明(Reproduced with permission, courtesy of [copyright owner])
  17. 计算机检索的主要方法,计算机检索主要途径和方法
  18. AUTOSAR岌岌可危?主机厂+Tier1+初创公司要“联手起义”
  19. 认知SaaS产品和MVP流程
  20. 分享:从编程中悟出的八字箴言

热门文章

  1. [Skr-Shop]通用抽奖工具之需求分析
  2. 2019年运维想比别人月薪多赚10K?那就一定要选门编程语言了!
  3. 关于如何训搭建企业自然语自训练库
  4. 总结:TCP/IP 详解(卷1: 协议)--第九章 广播和本地组播(IGMP 和 MLD)
  5. 计算机网络的工作原理演示动画,动画演示14种流量计的工作原理
  6. FTP服务器的搭建与使用FTP软件进行文件上传
  7. 中望CAD的引线标注格式怎么改_国产操作系统生态有新进展!中望携手统信推出UOS版本CAD...
  8. 速卖通html自定义属性,速卖通定制属性类目公告
  9. AFNetworking.h file not found 解决办法
  10. 求助,大神们可不可以帮我看看这个报错