定义:
call:调用一个对象的一个方法,以另一个对象替换当前对象。
apply:应用某一对象的一个方法,用另一个对象替换当前对象。
语法:
call([thisObj[,arg1[, arg2[, [,.argN]]]]])
apply([thisObj[,argArray]])
区别:
call和apply用法几乎一样,第一个参数为一个对象,不同之处在于第一个参数后参数的不同。call第一个参数后的参数为参数列表;apply第一个参数后的参数为数组。
实例:
apply:
function sub(a, b){ console.log(a-b);}function add(a, b){ console.log(a+b);}add.apply(sub, [2, 3]);//5
call:
function sub(a, b){ console.log(a-b);}function add(a, b){ console.log(a+b);}add.call(sub, 2, 3);//5
由上例可以看出,当使用apply时,apply的第二个参数为数组参数。当使用call时,call的参数为列表。从结果可以看出函数add()替换了函数sub()运行。(也可以看成在sub函数执行时调用并执行了add函数)