call和apply之间的区别

前言


最近在学习javascript的类与继承的时候发现一个新的问题,就是call()和apply()方法,就我们所知都是用于改变this的指向,然后我就联想到了它们之间有什么区别,因此有本文。

call()方法


call()方法有两个参数,第一个参数是改变this指向,第二个参数是需要传的参数。

Person.call(this, name)

apply()方法


apply()方法有一个必选参数,第二个参数是可选的,第一个参数也是改变this的指向,而第二个参数只能传一个实参且须是数组。

Person.prototype.apply(this);
Person.apply(this, [name, age]);

两者之间的区别


call()方法的第二个参数可以传递多个参数,实参必须要按照形参的个数和顺序进行传参。
apply()方法的第二个值只能传递一个参数而必须是数组。