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是不可替代的?例如,我听说过“伪造”数组方法或处理...