bind、call或者apply方法的具体使用说是
时间: 2024-03-20 19:45:16 浏览: 54
这三个方法都是用来改变 JavaScript 函数中的 this 指向的。下面是它们的具体使用方法:
1. bind
bind() 方法会创建一个新函数,称为绑定函数。当调用绑定函数时,绑定函数会以其创建时传入 bind() 方法的第一个参数作为 this,传入的其他参数会作为绑定函数的参数,接着调用原函数并返回原函数的执行结果。bind() 方法不会执行原函数。
示例代码:
```
const obj = {
name: '小明',
sayHello: function(age) {
console.log(`我叫${this.name},今年${age}岁。`);
}
};
const newObj = { name: '小红' };
const bindFunc = obj.sayHello.bind(newObj, 18);
bindFunc(); // 输出:我叫小红,今年18岁。
```
2. call
call() 方法会调用函数,并将传入的第一个参数作为 this,其他参数作为函数的参数,接着返回函数的执行结果。
示例代码:
```
const obj = {
name: '小明',
sayHello: function(age) {
console.log(`我叫${this.name},今年${age}岁。`);
}
};
const newObj = { name: '小红' };
obj.sayHello.call(newObj, 18); // 输出:我叫小红,今年18岁。
```
3. apply
apply() 方法与 call() 方法类似,不同之处在于传入参数的方式。apply() 方法接受一个参数数组,数组中的第一个元素作为 this,其他元素作为函数的参数,接着返回函数的执行结果。
示例代码:
```
const obj = {
name: '小明',
sayHello: function(age) {
console.log(`我叫${this.name},今年${age}岁。`);
}
};
const newObj = { name: '小红' };
obj.sayHello.apply(newObj, [18]); // 输出:我叫小红,今年18岁。
```
阅读全文