apply和call都是用来改变函数执行时的上下文(context)的。其中,apply接收一个数组作为参数,而call接收一系列参数。举例如下:
- apply的用法:
function greet() {
console.log(`Hello, ${this.name}!`);
}
const person = { name: 'Alice' };
greet.apply(person); // Hello, Alice!
在这个例子中,我们定义了一个greet()函数,然后通过apply方法将它的上下文设置为person对象,最终输出了"Hello, Alice!"。
- call的用法:
function greet(message) {
console.log(`${message}, ${this.name}!`);
}
const person = { name: 'Bob' };
greet.call(person, 'Hi'); // Hi, Bob!
在这个例子中,我们定义了一个greet()函数,然后通过call方法将它的上下文设置为person对象,并且传入了一个参数"Hi"。最终输出了"Hi, Bob!"。
总的来说,apply和call的作用是相同的,只是传参的方式不同。在实际开发中,我们可以根据需要选择使用其中的一种。