建议看这片文章时可以点击音乐?,来个单曲循环,美滋滋

我的博客内容更精彩,好东西需要耐心等待哦!?

先拿call开刀

作用:call和apply都是替换函数内错误的this

    var a = {value:1}var b = function(){console.log(this.value) // 如果不对this进行绑定执行bar() 会返回undefined}b.call(a) //1

去除繁琐的讲解,一步到位自己模拟call的用法写一个函数,达到相同目的

    Function.prototype.myCall = function(context){var context = context || window; //当没传入值时候,就是指全局windowcontext.fn = this; //把调用myCall前的方法缓存下来var args = [...arguments].slice(1);//使用...打散传入值,并去除第一方法,得到一个数组var result = context.fn(...args);//把数组打散,把dinging 18传入b方法中delete context.fn; //删除return result}var a = {value:1}var b = function(name,age){console.log(this.value)console.log(name)console.log(age)}b.myCall(a,"dingding",18)

apply

apply的方法和 call 方法的实现类似,只不过是如果有参数,以数组形式进行传递

apply这个API平时使用的场景,代码如下:

    var a = {value:1}var b = function(name,age){console.log(this.value)console.log(name)console.log(age)}b.apply(a,["dingding",18])

直接上模拟apply功能代码

    Function.prototype.myApply = function(context){var context = context || window;context.fn = this;var result;if(arguments[1]){result = context.fn(...arguments[1]) }else{result = context.fn()}delete context.fnreturn result}var a = {value:1}var b = function(name,age){console.log(this.value)console.log(name)console.log(age)}b.myApply(a,["dingding",18])

参考资料

探究call 和 apply 的原理相关推荐

  1. 基于探究式教学法的计算机网络原理课程的教学改革与实践,基于探究式教学法的“计算机网络原理”课程的教学改革与实践分析...

    基于探究式教学法的 "计算机网络原理"课程的教学改革与实践分析 张敏莉 摘要":计算机网络原理"课程教学的目标是让学生学习和掌握计算机网络的基本概念.原理.方法 ...

  2. android digest 认证,探究 Android 签名机制和原理

    背景 最近在调研一个测试工具的使用,在使用中发现被测试工具处理过的apk文件经安装后打开就会崩溃,分析崩溃日志后原因是签名不一致导致的. 说到Android中的签名,可能大家都知道签名的目的就是为了保 ...

  3. PostgreSQL 备库apply延迟原理分析与诊断

    标签 PostgreSQL , 物理流复制 , IO不对称 背景 开车的同学都喜欢一马平川,最好是车道很多,车很少,开起来爽. 大家想象一下,同样的车速,6车道每秒可以通过6辆车,而1车道每秒就只能通 ...

  4. 【面试需要】掌握JavaScript中的this,call,apply的原理

    作者 |  Jeskson 掘金 |  https://juejin.im/user/5a16e1f3f265da43128096cb 2020年01月10日 前言,为什么要学习在掌握JavaScri ...

  5. 探究KVO的底层实现原理

    addObserver:forKeyPath:options:context:各个参数的作用分别是什么, observer中需要实现哪个方法才能获得KVO回调? /**1. self.person:要 ...

  6. 软件测试 | 测试开发 | 探究 PHP_CodeSniffer 的代码静态分析原理

    导读 PHP_CodeSniffer是一个用来检查PHP代码规范的开源项目.它主要通过词法分析的方式将PHP源码解析成TOKEN数组,然后在TOKEN中标记出不符合代码规范的代码位置. 目前编程语言可 ...

  7. 探究 PHP_CodeSniffer 的代码静态分析原理

    导读 PHP_CodeSniffer是一个用来检查PHP代码规范的开源项目.它主要通过词法分析的方式将PHP源码解析成TOKEN数组,然后在TOKEN中标记出不符合代码规范的代码位置. 目前编程语言可 ...

  8. 探究安全帽识别系统的原理及应用

    安全帽识别这一词想必大家都有所耳闻,但是他的工作原理和应用大家可能不太了解.富维图像作为资深的安全帽识别设计者,将为大家追本溯源,让大家了解安全帽识别的庐山真面目. ​​​​​​​ 安全帽识别系统是基 ...

  9. 基于探究式教学法的计算机网络原理课程的教学改革与实践,《计算机网络原理》探究式教学研与实践.doc...

    第 PAGE 页 <计算机网络原理>剖析式教学研究与实践 1 前言 剖析式教学是结合素质教育要求实行一种注重培养学生开拓创新,主动学习与动手能力等综合素质开放.系统教学过程.倡导学生主动参 ...

最新文章

  1. 把佳佳的博客搬出去了
  2. /dev/mapper/VolGroup00-LogVol00 100% 如何处理
  3. 2015.05.15,外语,学习笔记-《Word Power Made Easy》 01 “如何讨论人格特点”
  4. matlab绘制二元一次函数图像_【八上数学】 一次函数必考知识点(下)
  5. Oracle 直方图理论
  6. Java学习笔记004——接口、克隆、回调、内部类
  7. 信息学奥赛一本通(1016:整型数据类型存储空间大小)
  8. JAVA编程规则【转自java编程思想】
  9. linux中dns超时时间,Linux DNS timeout, attempts.---DNS超时,重试的配置
  10. 项目管理学习总结(3)——产品文档的规划化管理总结
  11. 嵌入式论文3000字_普通期刊发表论文费用是多少
  12. 在线运行java代码并得到结果_Java代码是如何运行的?
  13. ORACLE锁的管理
  14. 只身单车游山东(一)
  15. pillow生成企业营业执照
  16. 京东登录页面html代码_利用Python爬取京东商品的一种办法
  17. 人声歌姬语音合成器+11个歌手音源-Yamaha Vocaloid 5.2.1 + Libraries WiN
  18. 信号完整性(SI)电源完整性(PI)学习笔记(三十三)102条使信号完整性问题最小化的通用设计规则
  19. 聊聊“PPT文化”违反敏捷么
  20. 关于Obj-c代码静态扫描 iPhone代码静态扫描的问题(clang-analyzer)

热门文章

  1. Dubbo底层采用Socket进行通信详解
  2. 创建并运用客户化jsp标签
  3. linux下文件删除不了
  4. weblogic问题: Unable to resolve 'jdbc.mydb'. Resolved 'jdbc'; remaining name '
  5. swift 拖动按钮_Swift - 单元格滑动按钮库SwipeCellKit使用详解1(基本用法)
  6. Mysql介绍与安装LinuxmacOS系统
  7. 计算机仿真在哪学,计算机仿真软件有哪些
  8. c++ linux 环境,C++ 环境设置
  9. 杭州保俶塔实验机器人_【科教有闻】高照实验学校Pepper机器人课程亮相2020(杭州)国际数字教育大会“智能教育引领未来”论坛...
  10. 城市轨道交通运营管理属于什么院系_专业介绍|城市轨道交通运营管理专业