call和apply区别
时间: 2024-01-06 21:03:59 浏览: 26
call和apply都是JavaScript中用来调用函数的方法,它们的主要区别在于传递参数的方式不同。call方法传递参数是一个一个地传递,而apply方法则是传递一个数组作为参数。例如,使用call方法调用一个函数:func.call(obj, arg1, arg2, arg3); 而使用apply方法调用同一个函数:func.apply(obj, [arg1, arg2, arg3]);。
相关问题
call 和 apply区别
`call` 和 `apply` 都可以用来调用函数并且改变函数内部的 `this` 指向。它们的区别在于传递参数的方式不同。
`call` 方法接收一个参数列表,第一个参数是要改变 `this` 指向的对象,后面的参数是要传递给函数的参数,参数之间用逗号分隔。
```javascript
function sayHello() {
console.log(`Hello ${this.name}`);
}
const person = { name: 'John' };
sayHello.call(person); // 输出:Hello John
```
`apply` 方法接收两个参数,第一个参数是要改变 `this` 指向的对象,第二个参数是一个数组或类数组对象,数组中的元素是要传递给函数的参数。
```javascript
function sayHello(greeting) {
console.log(`${greeting} ${this.name}`);
}
const person = { name: 'John' };
const args = ['Hello'];
sayHello.apply(person, args); // 输出:Hello John
```
总的来说,它们的作用是一样的,只是传递参数的方式不同。
call和apply继承的区别
`call` 和 `apply` 都是用来改变函数执行时的上下文对象(即 `this` 关键字所指向的对象)的。它们的区别在于传递参数的方式不同。具体来说:
- `call` 方法接受一个参数列表,参数列表中的每个参数都会传递给函数。例如,`func.call(thisArg, arg1, arg2, ...)` 会将 `this` 关键字设置为 `thisArg`,并将 `arg1`、`arg2` 等参数传递给函数。
- `apply` 方法接受一个包含多个参数的数组作为参数。例如,`func.apply(thisArg, [arg1, arg2, ...])` 会将 `this` 关键字设置为 `thisArg`,并将包含 `arg1`、`arg2` 等参数的数组传递给函数。
因此,`call` 和 `apply` 的主要区别在于传递参数的方式不同。在使用时需要根据实际情况来选择使用哪一个。