call、bind、apply三者的区别
时间: 2023-12-11 10:03:29 浏览: 182
`call`、`bind`、`apply` 都是 JavaScript 中用于改变函数执行上下文(即 `this` 指向)的方法。
`call` 和 `apply` 的作用是一样的,都是用来调用函数并且改变函数内部的 `this` 指向。区别在于传参的方式不同,`call` 的参数是一个一个传递的,而 `apply` 的参数是以数组的形式传递的。
`bind` 方法不会立即执行函数,而是返回一个新的函数,这个新的函数的 `this` 值被绑定到了指定的对象,调用时也可以传入参数。同时使用 `bind` 方法可以实现柯里化,即将函数转化为接收部分参数的函数。
示例代码:
```
function sayHello() {
console.log(`Hello, ${this.name}!`);
}
const person = { name: 'Tom' };
// 使用 call 方法调用 sayHello 函数
sayHello.call(person);
// 使用 apply 方法调用 sayHello 函数
sayHello.apply(person);
// 使用 bind 方法创建一个新的函数
const sayHelloToPerson = sayHello.bind(person);
sayHelloToPerson();
```
相关问题
js call apply bind
JavaScript 中有三个方法可以改变函数执行上下文:call()、apply() 和 bind()。
- call() 方法可以将函数设置为对象的方法,并立即执行该函数。
- apply() 方法与 call() 方法类似,只是第二个参数需要是一个参数数组。
- bind() 方法创建一个新函数,在调用时设置上下文和参数。
三者的使用方法不同,需要根据具体场景来使用。
阅读全文