前端apply和call,bind区别
时间: 2023-04-29 22:01:48 浏览: 82
apply、call和bind都是用来改变函数执行时this的指向的方法。
apply和call的区别在于传参方式不同,apply接收一个数组作为参数,而call接收多个参数。
bind方法会返回一个新的函数,新函数的this指向被绑定的对象,但不会立即执行,需要手动调用。
举个例子:
```
var obj = {
name: 'Tom'
};
function sayHello(age) {
console.log('Hello, my name is ' + this.name + ', I am ' + age + ' years old.');
}
sayHello.apply(obj, [18]); // Hello, my name is Tom, I am 18 years old.
sayHello.call(obj, 18); // Hello, my name is Tom, I am 18 years old.
var newFunc = sayHello.bind(obj);
newFunc(18); // Hello, my name is Tom, I am 18 years old.
```
相关问题
call、apply和bind 区别
call、apply和bind都是JavaScript中用来改变函数this指向的方法。
call和apply是直接调用函数时使用的方式,它们都可以改变函数内部的this指向。其中call接受一个参数列表,而apply接受一个参数数组。
bind则是对函数进行预处理,并返回一个新的函数,这个新函数的this指向已经确定。它的使用方式与call类似,但是不会立即执行函数,而是返回一个新函数,需要手动调用。
因此,call和apply是改变this指向的立即执行方式,而bind是返回一个新函数并改变this指向的延迟执行方式。
js中call和apply和bind区别
JavaScript 中的 call 和 apply 和 bind 是 JavaScript 中的函数对象的三个方法。它们的主要作用是改变函数的调用对象。
call:
- 与 apply 类似,都是在特定的作用域中调用函数
- 但是传入参数的形式不同,call 是把参数列举出来传入函数
apply:
- 与 call 类似,都是在特定的作用域中调用函数
- 但是传入参数的形式不同,apply 是把参数放在一个数组或者类数组里传入
bind:
- 与 call 和 apply 的不同之处在于 bind 不会立即调用函数,而是返回一个新的函数,需要在需要的时候再调用,也就是提前指定好函数的执行环境