前言
最近在学习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()方法的第二个值只能传递一个参数而必须是数组。