美文网首页
call和apply函数的工作流程(重点)

call和apply函数的工作流程(重点)

作者: 胜过夜的美 | 来源:发表于2018-06-08 17:53 被阅读0次

    首先介绍一下call和apply方法的工作流程

    call的工作流程 

    F.call(thisarg,[arg1……]) 

    1、先判断F是否为一个函数,如果不是一个函数,那么将抛出TypeError异常。 

    2、创建一个内部类型空列表list 

    3、然后如果参数除去thisarg外还有其他参数的话,就将这些值添加到list中 

    4、Iangthisarg和list作为F内部属性[[Call]]的参数传入调用进行函数的执行操作

    apply的工作流程 

    F.apply(thisarg,argList) 

    1、先判断F是否为一个函数,如果不是一个函数,那么将抛出TypeError异常。 

    2、创建一个内部类型空列表list 

    3、如果argList为null或者undefined的话不做什么。 

    4、否则,就将argList中的成员添加到list中,仅仅是成员,即使argList成员为另一个数组 

    5、让thisarg和list作为F内部属性[[Call]]的参数传入调用进行函数的执行操作

    call和apply方法的相同点和不同点

    1. 每个函数都包含两个非继承而来的方法:call()方法和apply()方法。

    2. 相同点:这两个方法的作用是一样的。

    都是在特定的作用域中调用函数,等于设置函数体内this对象的值,以扩充函数赖以运行的作用域。

    一般来说,this总是指向调用某个方法的对象,但是使用call()和apply()方法时,就会改变this的指向。

    相关文章

      网友评论

          本文标题:call和apply函数的工作流程(重点)

          本文链接:https://www.haomeiwen.com/subject/prbasftx.html