箭头函数的缺点
-
没有 arguments
-
无法通过 apply call bind 改变 this
-
某些箭头函数代码难以阅读
不适合使用箭头函数的情况
- 1、不适用与对象方法
const obj = {
name: "dj",
getName: () => {
return this.name;
}
}
console.log(obj.getName()); // 拿不到
- 2、不适用与原型方法
const obj = {
name: "dj"
}
obj.__proto__.getName = () => {
return this.name
}
console.log(obj.getName()) // 拿不到
- 3、不适用于构造函数(箭头函数无法当做构造函数)
const People = (name, age) => {
this.name = name;
this.age = age;
}
const p = new People("dj", 20); // 报错
- 4、不适用于动态上下文中的回调函数
const btn = document.getElementById("btn");
btn.addEventListener("click", () => {
// this === window
this.innerHTML = "clicked";
})
- 5、不适用于Vue生命周期和method
vue 组件本质上是一个 js 对象 react 组件(非hooks)本质上是一个 es6 class class 组件用箭头函数是可以的
mounted: () => {},
methods: {
getName: () => {}
}