call 和 apply 的核心区别在于参数传递方式不同。1. call 的参数依次列出,适用于参数固定、明确的场景,如 math.max.call(null, 1, 2, 3);2. apply 的参数为数组或类数组,会自动展开,适合参数为数组的情况,如 math.max.apply(null, [10, 20, 30]);3. 现代可用 bind 绑定 this 或扩展运算符替代 apply 的展开功能,但理解 call 和 apply 的本质仍很重要。

在 JavaScript 中,call 和 apply 的作用其实很相似,都是用来改变函数执行时的 this 指向。它们的核心区别在于:参数传递的方式不同。
1. 参数形式不同
这是 call 和 apply 最主要的区别:
- call 的参数是依次列出的。
- apply 的参数是一个数组(或类数组),会自动展开成多个参数。
举个例子:
function greet(name, age) { console.log(`Hi ${name}, you are ${age} years old. This is ${this.name}`);}const obj = { name: 'World' };greet.call(obj, 'Alice', 25); // Hi Alice, you are 25 years old. This is Worldgreet.apply(obj, ['Bob', 30]); // Hi Bob, you are 30 years old. This is World登录后复制
文章来自互联网,不代表电脑知识网立场。发布者:,转载请注明出处:https://www.pcxun.com/n/713978.html
