call 和 apply 都是 Function 对象的方法,它们都可以用来改变函数的 this 上下文并立即调用这个函数。它们的主要区别在于参数的传递方式:
- call 方法接受的是参数列表,第一个参数是
this的值,之后是传递给函数的参数。例如:function greet(name, age) { console.log(`Hello, my name is {name} and I am{age} years old.`); } greet.call(, 'Alice', 25); // 输出 "Hello, my name is Alice and I am 25 years old." - apply 方法接受的是一个参数数组,第一个参数同样是
this的值,第二个参数是一个数组,其中包含了传递给函数的参数。例如:function greet(name, age) { console.log(`Hello, my name is {name} and I am{age} years old.`); } greet.apply(, ['Alice', 25]); // 输出 "Hello, my name is Alice and I am 25 years old."在 ES6 中,你还可以使用扩展运算符(spread operator)和
apply达到和call相同的效果:greet.apply(, ['Alice', 25]); // 使用 apply greet(...['Alice', 25]); // 使用扩展运算符,效果和上面一样总的来说,
call和apply的功能是相同的,只是参数的传递方式不同。你可以根据实际需求选择使用哪一个。
call和apply方法的区别与使用
3189

被折叠的 条评论
为什么被折叠?



