美文网首页
JS基础篇-bind、call和apply之间的区别

JS基础篇-bind、call和apply之间的区别

作者: 艾萨克菊花 | 来源:发表于2019-07-22 11:06 被阅读0次

    此文章内容参考链接:https://www.jianshu.com/p/bc541afad6ee

    bind、call和apply的作用都是改变函数运行时 this 的指向,所以对 this 不了解同学可以先看这篇文章:this指向问题

    call 

    方法第一个参数是要绑定给this的值,后面传入的是一个参数列表。当第一个参数为null、undefined的时候,默认指向window。

    apply

    apply接受两个参数,第一个参数是要绑定给this的值,第二个参数是一个参数数组。当第一个参数为null、undefined的时候,默认指向window。

    bind

    和call很相似,第一个参数是this的指向,从第二个参数开始是接收的参数列表。区别在于bind方法返回值是函数以及bind接收的参数列表的使用。

    call、apply和bind函数存在的区别:

    bind返回对应函数, 便于稍后调用; apply, call则是立即调用。

    除此外, 在 ES6 的箭头函数下, call 和 apply 将失效, 对于箭头函数来说:

    箭头函数体内的 this 对象, 就是定义时所在的对象, 而不是使用时所在的对象;所以不需要类似于var _this = this这种丑陋的写法

    箭头函数不可以当作构造函数,也就是说不可以使用 new 命令, 否则会抛出一个错误

    箭头函数不可以使用 arguments 对象,,该对象在函数体内不存在. 如果要用, 可以用 Rest 参数代替

    不可以使用 yield 命令, 因此箭头函数不能用作 Generator 函数,什么是Generator函数可自行查阅资料,推荐阅读阮一峰Generator 函数的含义与用法Generator 函数的异步应用

    相关文章

      网友评论

          本文标题:JS基础篇-bind、call和apply之间的区别

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