箭头函数和普通函数的this指向举例
时间: 2023-08-09 14:06:30 浏览: 89
好的,我举个例子来说明箭头函数和普通函数的this指向不同。
假设有以下代码:
```javascript
const obj = {
name: 'Alice',
sayName() {
console.log(this.name);
}
};
obj.sayName(); // 输出:Alice
const sayName = obj.sayName;
sayName(); // 输出:undefined
```
在这个例子中,obj对象有一个方法sayName,它可以输出obj对象的name属性的值。当我们调用obj.sayName()时,sayName方法中的this指向了obj对象,输出了正确的值。
但是当我们把sayName方法赋值给一个变量sayName,并且在全局作用域中调用它时,sayName方法中的this指向了全局对象,输出了undefined,这是因为在全局作用域中没有name属性。
如果我们使用箭头函数来定义sayName方法,那么它的this指向就不会受调用方式的影响。例如:
```javascript
const obj = {
name: 'Alice',
sayName: () => {
console.log(this.name);
}
};
obj.sayName(); // 输出:undefined
const sayName = obj.sayName;
sayName(); // 输出:undefined
```
在这个例子中,无论是在obj对象中调用箭头函数还是在全局作用域中调用它,输出的都是undefined,因为箭头函数的this指向是在定义时确定的,与调用方式无关。
阅读全文
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![txt](https://img-home.csdnimg.cn/images/20241231045021.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![text/x-c](https://img-home.csdnimg.cn/images/20250102104920.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![ppt](https://img-home.csdnimg.cn/images/20241231044937.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![doc](https://img-home.csdnimg.cn/images/20241231044833.png)