apply call bind
时间: 2024-01-06 09:03:35 浏览: 82
`apply`, `call`, 和 `bind` 都是 JavaScript 中用于调用函数的方法。
`apply` 和 `call` 都是用来改变函数执行时的上下文(即 this 的指向)的。它们的第一个参数都是要绑定给 this 的值。`apply` 的第二个参数是一个数组,它会被作为函数的参数传入;而 `call` 的第二个到第 n 个参数是直接传入函数的参数。
举个例子:
```javascript
function addNumbers(a, b, c) {
return a + b + c;
}
const numbers = [1, 2, 3];
console.log(addNumbers.apply(null, numbers)); // 6
console.log(addNumbers.call(null, ...numbers)); // 6
```
`bind` 方法也可以用来改变函数执行时的上下文,但是它不会立即执行函数,而是返回一个新的函数,这个函数的 this 值会绑定到 bind 的第一个参数。bind 的第二个到第 n 个参数也会被作为函数的参数传入。这个新函数可以稍后执行。
举个例子:
```javascript
function addNumbers(a, b, c) {
return a + b + c;
}
const addTwoNumbers = addNumbers.bind(null, 1, 2);
console.log(addTwoNumbers(3)); // 6
console.log(addTwoNumbers(4)); // 7
```
在这个例子中,`addTwoNumbers` 是一个新函数,它的 this 值被绑定到了 null,前两个参数被固定为 1 和 2。我们可以多次调用这个新函数,并传入第三个参数。
阅读全文