apply()与call()的区别

176 阅读1分钟
JavaScript中的每一个Function对象都有一个apply()方法和一个call()方法,它们的语法分别为:


1、 apply()方法

 function.apply(thisObj[, argArray]) 

2、call()方法

function.call(thisObj[, arg1[, arg2[, [,...argN]]]]);

定义:


apply:调用一个对象的一个方法,用另一个对象替换当前对象。例如:

B.apply(A, arguments);

即A对象应用B对象的方法。


call:调用一个对象的一个方法,用另一个对象替换当前对象。例如:

B.call(A, args1, args2);

即A对象调用B对象的方法。


3、共同之处


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


4、不同之处

apply:最多只能有两个参数——新this对象和一个数组argArray。


call:它可以接受多个参数,第一个参数与apply一样,后面则是一串参数列表。


实际上,apply和call的功能是一样的,只是传入的参数列表形式不同。