箭头函数和普通函数的this指向举例
时间: 2023-08-09 22:06:30 浏览: 85
标准函数stdlib.h应用举例-综合文档
好的,我举个例子来说明箭头函数和普通函数的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指向是在定义时确定的,与调用方式无关。
阅读全文