call bind apply区别
时间: 2023-05-08 07:02:37 浏览: 115
call、bind和apply都是JavaScript中常用的方法,它们都可以用来改变函数中this的指向。
call和apply的作用相似,都是在调用函数时改变函数中this的指向。不同的是,call是依次列出每个参数,而apply是通过数组传递参数。比如:
```
function sayHello(name, age) {
console.log(`Hello, ${name}. You are ${age} years old.`);
}
sayHello.call(this, "Alice", 18); // Hello, Alice. You are 18 years old.
sayHello.apply(this, ["Bob", 20]); // Hello, Bob. You are 20 years old.
```
bind方法和call、apply方法的区别在于它不会立即执行函数,而是返回一个新的函数并指定了函数中this的指向。这样可以在随后调用这个绑定了this的函数,如:
```
const person = {
name: "Tom",
age: 30,
sayHello: function() {
console.log(`Hello, my name is ${this.name}.`);
}
}
const sayHello = person.sayHello.bind(person);
sayHello(); // Hello, my name is Tom.
```
总的来说,call、bind和apply都是对JavaScript中函数this的指向进行更改的方法,但它们的具体使用方式和效果是有区别的。因此,在不同的使用场景下,要选择合适的方法来改变函数中this的指向。
阅读全文