Avatar ·

JavaScript中call和apply的区别是什么?何时使用?

大家好!我开始学习JavaScript,遇到了call和apply方法。我知道它们都允许在指定的上下文(this的值)中调用函数,但我无法理解它们之间的根本区别。 假设我有一个简单的对象和一个函数: ```javascript const person = { firstName: '伊万', lastName: '彼得罗夫' }; function greet(greeting, punctuation) { console.log(`${greeting}, ${this.firstName} ${this.lastName}${punctuation}`); } ``` 我可以通过call调用这个函数: ```javascript greet.call(person, '你好', '!'); // 你好, 伊万 彼得罗夫! ``` 也可以通过apply调用: ```javascript greet.apply(person, ['你好', '!']); // 你好, 伊万 彼得罗夫! ``` 结果是一样的。我了解到区别在于参数的传递方式:call是逗号分隔,apply是数组。但这只是语法糖吗?还是有一些实际场景中apply是不可替代的?例如,我听说过“伪造”数组方法或处理...