bind, call, apply是什么
时间: 2024-09-18 12:03:24 浏览: 26
在JavaScript中,bind(), call() 和 apply() 都是函数对象的方法,用于改变函数的行为以适应不同的上下文或者传递特定的实参。
1. **bind()**:此方法返回一个新的函数,这个新函数会捕获并保存当前函数的所有绑定的this值(即函数内部能够访问到的对象)。当你调用这个新函数时,它的this将固定为你在bind()时指定的对象,而其余参数则是通过数组形式传递的。
示例:
```javascript
const obj = { name: 'John' };
const sayName = function() {
console.log(this.name);
};
const boundSayName = sayName.bind(obj); // this will always be 'obj' in the new function
boundSayName(); // 输出 "John"
```
2. **call()**:此方法允许你改变函数的上下文,并立即执行该函数,可以传入两个参数,第一个参数是新的上下文(this指向),第二个参数是一个数组或逗号分隔的参数列表。
示例:
```javascript
let obj = {name: 'Tom'};
sayName.call(obj); // 相当于 obj.sayName();
```
3. **apply()**:与call()类似,但它接受一个单独的数组作为参数,而不是分开的参数。这通常用于一次性提供多个参数给函数。
示例:
```javascript
let args = ['Jerry'];
sayName.apply(obj, args); // 相当于 obj.sayName('Jerry');
```
阅读全文