js call apply bind区别
时间: 2023-05-03 14:01:19 浏览: 60
call、apply、bind都是JavaScript中用于处理函数调用的方法。call和apply的作用是改变函数中this的指向,call传参是一个一个的传,apply是将参数打包成数组传递。bind方法不是立即执行函数,而是用来生成一个新的函数,新函数的this值被绑定到指定的对象,而不是被隐式绑定。同时,bind方法也支持预设参数,返回一个可以延迟调用的函数。
相关问题
call apply bind 区别
call、apply、bind 都是 JavaScript 中用来改变函数执行上下文的方法。它们的主要区别在于传递参数的方式和返回值。
call 和 apply 都是立即执行函数,调用函数的同时改变函数执行的上下文,而 bind 则是返回一个新的函数,后续可以调用这个新的函数并改变函数执行的上下文。
call 和 apply 传递的参数方式不同,call 接受的是参数列表,apply 接收的是一个数组;bind 则支持传递参数列表,后续调用可再传入参数。
call 和 apply 都会立即执行函数并返回执行结果,而 bind 返回一个新的函数,需要再次调用才会执行。
举个例子:
```
var obj = {
name: 'Tom'
};
function sayHi(age) {
console.log(`Hi, my name is ${this.name}, I'm ${age} years old.`);
}
sayHi.call(obj, 18); // Hi, my name is Tom, I'm 18 years old.
sayHi.apply(obj, [18]); // Hi, my name is Tom, I'm 18 years old.
var sayHiBinded = sayHi.bind(obj, 18);
sayHiBinded(); // Hi, my name is Tom, I'm 18 years old.
```
js call apply bind
JavaScript 中有三个方法可以改变函数执行上下文:call()、apply() 和 bind()。
- call() 方法可以将函数设置为对象的方法,并立即执行该函数。
- apply() 方法与 call() 方法类似,只是第二个参数需要是一个参数数组。
- bind() 方法创建一个新函数,在调用时设置上下文和参数。
三者的使用方法不同,需要根据具体场景来使用。