12. Bind,call,apply的区别
时间: 2024-05-13 14:16:52 浏览: 119
`bind`,`call`和`apply`是JavaScript中函数的三种不同调用方式,它们的区别如下:
1. `bind`方法创建一个新的函数,其this关键字设置为提供的值,不会立即执行原函数,而是返回一个可以稍后调用的新函数。
2. `call`方法调用一个函数,其this关键字设置为提供的值,并立即执行该函数。
3. `apply`方法调用一个函数,其this关键字设置为提供的值,函数参数以数组的形式提供,并立即执行该函数。
例如,假设有以下函数:
```
function sayHello(message) {
console.log(this.name + " says " + message);
}
```
现在我们可以使用`bind`,`call`和`apply`来调用这个函数,例如:
```
var person = { name: "John" };
// Using bind
var sayHelloToPerson = sayHello.bind(person);
sayHelloToPerson("hello");
// Using call
sayHello.call(person, "hello");
// Using apply
sayHello.apply(person, ["hello"]);
```
在这个例子中,我们创建了一个名为`person`的对象,并定义了一个`sayHello`函数,该函数使用`this`关键字引用对象的名称。然后,我们使用`bind`,`call`和`apply`来调用函数,并将`person`对象作为`this`关键字提供给函数。`bind`方法返回一个新的函数,`call`和`apply`立即调用函数。`call`方法和`apply`方法之间的唯一区别是函数的参数如何传递。
阅读全文