开发者社区> 问答> 正文

手写 call、apply 及 bind 函数

手写 call、apply 及 bind 函数

展开
收起
请回答1024 2020-04-06 15:31:29 930 0
1 条回答
写回答
取消 提交回答
  • call 函数的实现步骤:

    1.判断调用对象是否为函数,即使我们是定义在函数的原型上的,但是可能出现使用 call 等方式调用的情况。

    2.判断传入上下文对象是否存在,如果不存在,则设置为 window 。

    3.处理传入的参数,截取第一个参数后的所有参数。

    4.将函数作为上下文对象的一个属性。

    5.使用上下文对象来调用这个方法,并保存返回结果。

    6.删除刚才新增的属性。

    7.返回结果。

    apply 函数的实现步骤:

    1.判断调用对象是否为函数,即使我们是定义在函数的原型上的,但是可能出现使用 call 等方式调用的情况。

    2.判断传入上下文对象是否存在,如果不存在,则设置为 window 。

    3.将函数作为上下文对象的一个属性。

    4.判断参数值是否传入

    4.使用上下文对象来调用这个方法,并保存返回结果。

    5.删除刚才新增的属性

    6.返回结果

    bind 函数的实现步骤:

    1.判断调用对象是否为函数,即使我们是定义在函数的原型上的,但是可能出现使用 call 等方式调用的情况。

    2.保存当前函数的引用,获取其余传入参数值。

    3.创建一个函数返回

    4.函数内部使用 apply 来绑定函数调用,需要判断函数作为构造函数的情况,这个时候需要传入当前函数的 this 给 apply 调用,其余情况都传入指定的上下文对象。

    2020-04-06 15:34:41
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载