面试官:你能手写实现call,apply,bind方法吗?

[实践系列] 主要是让我们通过实践去加深对一些原理的理解。

实践系列-前端路由

实践系列-Babel原理

实践系列-Promises/A+规范

实践系列-浏览器缓存机制

有兴趣的同学可以关注 我的博客,之后不断会有干货更新哦。 求star求follow~

三兄弟的作用.

apply.call.bind 都是为了改变函数运行时上下文(this指向)而存在的。

三兄弟的区别.

  • 三兄弟接收的第一个参数都是 要绑定的this指向.
  • apply的第二个参数是一个参数数组,call和bind的第二个及之后的参数作为函数实参按顺序传入。
  • bind不会立即调用,其他两个会立即调用。

接下来,我们来对三兄弟进行模拟实现

call的简易模拟实现(es6)

思路

call是可以被所有方法调用的,所以毫无疑问的定义在 Function的原型上!

绑定函数被调用时只传入第二个参数及之后的参数

如果调用者函数,被某一个对象所拥有,那么该函数在调用时,内部的this指向该对象。

ojbk..理清了思路.开撸

apply的简易模拟实现(es6)

apply实现的思路与call基本相同,我们只需要对参数进行不同处理即可

bind的简易模拟实现(es6)

思路

bind是可以被所有方法调用的,所以毫无疑问的定义在 Function的原型上!

bind函数返回一个绑定函数,最终调用需要传入函数实参和绑定函数的实参!!

如果调用者函数,被某一个对象所拥有,那么该函数在调用时,内部的this指向该对象。

End

如果有帮助到你,请给我一个star,就算是对我的感谢啦~

原文链接:segmentfault.com

上一篇:「前端早读君010」重学前端day1: HTML基础
下一篇:vueX10分钟入门

相关推荐

  • 🔥《吊打面试官》系列 Node.js 必知必会必问!

    (/public/upload/f204a3b224d986128f1b4d9b8d06cd17) 前言 codeing 应当是一生的事业,而不仅仅是 30 岁的青春🍚 本文已收录 Git...

    3 个月前
  • 面试常谈之手写new、call、apply和bind

    new 可以概括为以下四步: 1.创建一个空对象 2.链接到原型 3.绑定this值 4.返回新对象 call 这里提供两种写法 本文参考: (https://www.ji...

    10 个月前
  • 面试官:谈谈你对 CSS 盒模型的认识?(你确定会?)

    题目:谈谈你对 CSS 盒模型的认识 涉及知识点(层层递进): 1. 基本概念:标准模型 IE模型(区别) 2. CSS如何设置这两种模型 3. JS如何设置获取盒子模型对应的宽和高 4....

    2 年前
  • 面试官:请手写一个webpack4.0配置

    确认过眼神,你还是没有准备秋招的人?时间仓促。自京东6月8号开启管培生的招聘,就意味着秋招的开始。然而你还在等着秋天的到来?今年形势应该更为严峻,随着各大技术(vue,webpack,react,微信...

    2 年前
  • 面试官:请你在React中引入Vue3的@vue/reactivity,实现响应式。

    前言 React的状态管理是一个缤纷繁杂的大世界,光我知道的就不下数十种,其中有最出名immutable阵营的redux,有mutable阵营的mobx,reacteasystate,在hooks诞生...

    5 个月前
  • 面试官:请你介绍一下let const Object.freeze() ,set和get

    image.png(https://img.javascriptcn.com/a14365703d60277d0d01bfbcacf51841 "image.png") 前端巅峰 每日一题 : ...

    8 个月前
  • 面试官:说说执行上下文吧

    当 JS 引擎处理一段脚本内容的时候,它是以怎样的顺序解析和执行的?脚本中的那些变量是何时被定义的?它们之间错综复杂的访问关系又是怎样创建和链接的?要解释这些问题,就必须了解 JS 执行上下文的概念...

    2 个月前
  • 面试官:说说原型链和继承吧

    JavaScript 中没有类的概念的,主要通过原型链来实现继承。通常情况下,继承意味着复制操作,然而 JavaScript 默认并不会复制对象的属性,相反,JavaScript 只是在两个对象之间创...

    2 个月前
  • 面试官:说说作用域和闭包吧

    几乎所有语言的最基础模型之一就是在变量中存储值,并且在稍后取出或修改这些值。在变量中存储值和取出值的能力,给程序赋予了状态。这就引伸出两个问题:这些变量被存储在哪里?程序如何在需要的时候找到它们?回...

    1 个月前
  • 面试官:说说node中的可写流

    之前写过一篇流的文章,说说node中可读流和可写流,比较宏观的介绍了流的一些基本概念。下面是之前文章里的一张图: (/public/upload/eb467c7beb2f40a4b6455faa6e...

    2 个月前

官方社区

扫码加入 JavaScript 社区