call apply bind 区别
时间: 2024-02-10 18:37:45 浏览: 94
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区别
call、apply、bind都是JavaScript中用于处理函数调用的方法。call和apply的作用是改变函数中this的指向,call传参是一个一个的传,apply是将参数打包成数组传递。bind方法不是立即执行函数,而是用来生成一个新的函数,新函数的this值被绑定到指定的对象,而不是被隐式绑定。同时,bind方法也支持预设参数,返回一个可以延迟调用的函数。
j s的call apply bind区别
JavaScript 中的 call、apply 和 bind 都是 Function 对象的方法,用于改变函数的调用对象。
- call 方法可以将函数的调用对象改为传入的第一个参数,并将其余参数传入函数进行调用。
- apply 方法与 call 方法类似,只是将其余参数传入函数的方式不同,apply 方法接受的是一个参数数组。
- bind 方法用于创建一个新的函数,该函数的调用对象为传入的第一个参数,并且将其余参数预先绑定到该函数上。
总之:
call: 调用一个对象的一个方法,用另一个对象替换当前对象。
apply: 调用一个对象的一个方法,用另一个对象替换当前对象。
bind: 创建一个新函数,当被调用时,将其this关键字设置为提供的值。
阅读全文