call和apply的区别:
1、call函数和apply方法的第一个参数都是要传入给当前对象的对象,即函数内部的this。后面的参数都是传递给当前对象的参数。
2、俩者的格式和参数定义:
call的语法:call(thisObj,arg1,arg2……)
apply的语法:apply(thisObj,[argArray])
3、说明:对于apply和call两者在作用上是相同的,但两者
在参数上有区别的。对于第一个参数意义都一样,但对第二个参数:apply传入的是一个参数数组,也就是将多个参数组合成为一个数组传入,而call则作为call的参数传入(从第二个参数开始)。
eg: fun.call(thisObj,arg1,arg2,arg3)对应的apply写法为:fun.apply(thisObj,[arg1,arg2,arg3])。
4、call和apply的作用
①调用函数
②传参数
③借用其他函数的方法:
④改变函数内部的this指向
Call的简单用法:
Apply的简单用法:
实现继承:
说明:谁调用this就指向谁,Animal.call(this,name)将指向变成了Animall。原本指向的是Cat,这样一来Cat就继承了Animal的属性和方法。
实现多重继承: