改变js的this只想
时间: 2023-08-25 11:06:14 浏览: 33
可以通过使用`bind()`、`call()`和`apply()`方法来改变JavaScript中函数的`this`指向。
`bind()`方法会返回一个新函数,新函数的`this`值被绑定到传入的对象上,而不会立即调用原始函数。
`call()`和`apply()`方法都会立即调用函数,并将传入的对象作为函数的`this`值。它们的区别在于传参的方式不同:`call()`方法接收一个参数列表,而`apply()`方法接收一个参数数组。
例如,如果有一个函数`myFunction`,并且要将其`this`值绑定到一个对象`myObject`上,可以使用如下代码:
```
const boundFunction = myFunction.bind(myObject);
```
或者使用`call()`或`apply()`方法:
```
myFunction.call(myObject, arg1, arg2, ...);
myFunction.apply(myObject, [arg1, arg2, ...]);
```
这样就可以改变函数执行时的`this`指向了。
相关问题
JS 改变this指向
在 JavaScript 中,可以使用以下方法来改变函数中的 `this` 指向:
1. 使用 `bind` 方法:`bind` 方法创建一个新的函数,其 `this` 值被绑定到指定的对象。例如:
```javascript
function sayHello() {
console.log("Hello, " + this.name);
}
const obj = { name: "John" };
const boundFunc = sayHello.bind(obj);
boundFunc(); // 输出:Hello, John
```
2. 使用箭头函数:箭头函数会继承其父级作用域的 `this` 值,不会创建自己的 `this`。例如:
```javascript
const obj = {
name: "John",
sayHello: function() {
const innerFunc = () => {
console.log("Hello, " + this.name);
};
innerFunc();
}
};
obj.sayHello(); // 输出:Hello, John
```
3. 使用 `call` 或 `apply` 方法:`call` 和 `apply` 方法立即调用函数,并且显式指定函数内的 `this` 值。例如:
```javascript
function sayHello() {
console.log("Hello, " + this.name);
}
const obj = { name: "John" };
sayHello.call(obj); // 输出:Hello, John
sayHello.apply(obj); // 输出:Hello, John
```
这些方法可以帮助你在 JavaScript 中改变函数的 `this` 指向。
js 改变this指向
可以使用 call、apply、bind 方法来改变 this 指向。其中,call 和 apply 是直接调用函数并传入参数,bind 是返回一个新的函数并指定 this 指向。例如:
function sayName() {
console.log(this.name);
}
var person1 = {
name: 'Alice'
};
var person2 = {
name: 'Bob'
};
sayName.call(person1); // 输出 Alice
sayName.apply(person2); // 输出 Bob
var sayNamePerson1 = sayName.bind(person1);
sayNamePerson1(); // 输出 Alice