call和apply的区别

88 阅读1分钟

call和apply都是function原型上的方法,而每一个函数作为function一个实例,所以可以调取原型上的call和apply方法。

call方法的性能通常略优于apply方法,尤其是在参数数量较多时。这是因为call方法可以直接传递每个参数,而无需进行额外的数组处理。因此,在性能敏感的应用场景中,可能会倾向于使用call方法

不同点:传参的类别不同

call 第二个参数开始接受一个参数列表

call方法:

语法:call([thisObj[,arg1[, arg2[, [,.argN]]]]])

定义:调用一个对象的一个方法,以另一个对象替换当前对象

apply 第二个参数开始接受一个参数数组

apply方法:

语法:apply([thisObj[,argArray]])

定义:应用某一对象的一个方法,用另一个对象替换当前对象。

let obj = {
    age:19
}
function foo(a,b,c) {
    console.log(a, b, c);
}
// foo()
foo.apply(obj,[1,2,3])
// foo在执行的过程中,foo中的this指向谁
// call和apply的作用就是,修改函数执行的this
// foo.call(obj,1,2,3)