美文网首页
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函数的工作流程(重点)

    首先介绍一下call和apply方法的工作流程 call的工作流程 F.call(thisarg,[arg1……]...

  • 未整理

    call() 和 apply() 用来调用函数 call(函数名,参数值)apply(函数名,参数值)

  • JS高级学习:apply和call 的使用/bind方法/高阶函

    apply和call 的使用 apply和call的使用方法 apply的使用语法:函数名字.apply(对象,[...

  • call(),apply()和bind()

    call、apply和bind函数存在的区别:bind返回对应函数, 便于稍后调用; apply, call则是立...

  • call,bind,apply的方法

    call(),bind(),apply()均可以用来改变函数的this指向eg: call()和apply() 会...

  • bind call apply

    区别:call和apply调用就是执行函数 bind返回新函数 bind利用call或apply兼容i...

  • 继承

    1. 构造函数继承 重点:用.call()和.apply()将父类构造函数引入子类函数(在子类函数中做了父类函数的...

  • call和Apply和Bind

    call apply Bind ? call 和 apply 介绍在你指定的作用域中调用函数实际上等于设置函数体内...

  • JS中call、apply、bind的用法

    call和apply call和apply都是函数的正常调用方法,它们位于Function.prototype中,...

  • web前端 -- Day25 js高级

    apply和call的使用 apply和call作用: 可以改变this的指向 apply的使用语法函数名字.ap...

网友评论

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

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