在 class 内定义一个箭头函数和定义一个普通函数会有什么区别?
时间: 2023-11-18 14:03:00 浏览: 95
在 class 内定义一个箭头函数和定义一个普通函数的主要区别是它们在 this 的作用域上有所不同。
普通函数会创建它自己的 this 对象,而箭头函数没有自己的 this 对象,它会捕获上下文中的 this 值。因此,当在 class 内定义一个箭头函数时,箭头函数的 this 值将指向 class 实例对象的 this 值,而不是箭头函数自身的 this 值。
具体来说,当在 class 内定义一个普通函数时,该函数中的 this 将指向函数被调用的对象;而当在 class 内定义一个箭头函数时,该函数中的 this 将指向 class 实例对象。
例如,在下面的代码中,当调用 `person.sayHello()` 方法时,普通函数 `sayHello` 中的 this 指向 `person` 对象,而箭头函数 `sayHi` 中的 this 指向 `person` 对象的 this 值:
```javascript
class Person {
constructor(name) {
this.name = name;
}
sayHello() {
console.log(`Hello, my name is ${this.name}.`);
}
sayHi = () => {
console.log(`Hi, my name is ${this.name}.`);
}
}
const person = new Person('Alice');
person.sayHello(); // 输出 "Hello, my name is Alice."
person.sayHi(); // 输出 "Hi, my name is Alice."
```
阅读全文