call apply区别
时间: 2023-09-14 12:04:08 浏览: 30
`call` 和 `apply` 都是 JavaScript 中用来调用函数的方法,它们的作用是在特定的作用域中调用函数。
它们的区别在于传参的方式不同:
`call` 方法将参数作为一个一个的参数传递给函数,比如 `function.call(thisArg, arg1, arg2, ...)`。
`apply` 方法将参数作为一个数组(或类数组对象)传递给函数,比如 `function.apply(thisArg, [arg1, arg2, ...])`。
除了传参方式不同之外,它们的作用是相同的,都是改变函数的 this 指向,让其在指定的作用域中执行。
相关问题
call apply bind 区别
call、apply、bind 都是 JavaScript 中用来改变函数执行上下文的方法。它们的主要区别在于传递参数的方式和返回值。
call 和 apply 都是立即执行函数,调用函数的同时改变函数执行的上下文,而 bind 则是返回一个新的函数,后续可以调用这个新的函数并改变函数执行的上下文。
call 和 apply 传递的参数方式不同,call 接受的是参数列表,apply 接收的是一个数组;bind 则支持传递参数列表,后续调用可再传入参数。
call 和 apply 都会立即执行函数并返回执行结果,而 bind 返回一个新的函数,需要再次调用才会执行。
举个例子:
```
var obj = {
name: 'Tom'
};
function sayHi(age) {
console.log(`Hi, my name is ${this.name}, I'm ${age} years old.`);
}
sayHi.call(obj, 18); // Hi, my name is Tom, I'm 18 years old.
sayHi.apply(obj, [18]); // Hi, my name is Tom, I'm 18 years old.
var sayHiBinded = sayHi.bind(obj, 18);
sayHiBinded(); // Hi, my name is Tom, I'm 18 years old.
```
call apply bind传参区别
好的,让我来回答你的问题。在JavaScript中,call、apply和bind都可以用来改变函数的this指向。它们之间的主要区别在于它们传递参数的方式。
1. call():使用该方法可以改变函数的this指向,并立即执行该函数。它允许你以逐个参数的形式传递参数给函数。例如:
function add(a, b) {
return a + b;
}
add.call(null, 1, 2); // 3
2. apply():使用该方法同样可以改变函数的this指向,并立即执行该函数。和call()不同的是,它允许你把参数作为数组传递给函数。例如:
function add(a, b) {
return a + b;
}
add.apply(null, [1, 2]); // 3
3. bind():使用该方法也可以改变函数的this指向,但它返回一个新的函数,而不会立即执行该函数。bind()方法允许你预设传递给函数的一个或多个参数,以便在执行函数时保持这些参数不变。例如:
function add(a, b, c) {
return a + b + c;
}
var add1 = add.bind(null, 1);
add1(2, 3); // 6
以上就是call()、apply()和bind()传参的区别了。希望能对您有所帮助。