美文网首页
14.call和apply的区别

14.call和apply的区别

作者: jqClub | 来源:发表于2017-09-19 00:37 被阅读0次

共同之处:都 可以用来代替另一个对象调用一个方法,将一个函数的对象上下文从初始的上下文改变为由thisObj指定的新对象

不同之处:
apply:最多只能有2个参数——新this对象和一个数组argArray。如果给该方法传递多个参数,则把参数都写进这个数组里面,当然即使只有一个参数,也要写进数组里面。如果argArray不是一个有效的数组或者不是arguments对象,那么将导致一个TypeError。如果没有提供argArray和thisObj中的任何一个参数,那么Global对象将被用作thisObj,并且无法被传递任何参数

call:则是直接的参数列表,主要用在js对象各方法互相调用的时候,使当前this实例指针保持一致,或在特殊情况下需要改变this指针。如果没有提供thisObj参数,那么Global对象将被用作thisObj。

总结:

apply和call功能一样,只是传入的参数列表形式不同。如 func.apply(func1, [var1, var2, var3]), 对应的call写法:func.call(func1, var1, var2, var3)

三个的使用区别:
都是用来改变函数的this对象的指向的;
第一个参数都是this要指向的对象;
都可以利用后续参数传参;
bind是返回对应函数,便于稍后调用,apply、call是立即调用;

相关文章

网友评论

      本文标题:14.call和apply的区别

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